异常
1.生活中的异常
场景:和正常状态下的事件格格不入的场景,我们称之为异常
2.程序中的异常
(1)正常情况下的代码运行结果
(2)利用if else 解决异常代码运行结果
3.计算机中什么是异常
场景:正常情况下代码不会出现的场景
4.计算机中什么是异常处理
场景:如果代码出现与正常情况下相悖的场景,需要用代码去进行异常处理
try-catch
1.try-catch-正常
try{
//代码(存放你希望被执行的代码,这里的代码可能有异常,也可能没有异常)
}catch(异常类型 异常名称变量){
//异常处理的具体细节【捕获异常】
}
2.try-catch-异常
核心要点:
如果代码中同时出现多个可能出现异常的场景,只会捕获一次异常,也就是说
只执行一次catch模块分支【捕获的顺序是由上至下】
try{
//代码(存放你希望被执行的代码,这里的代码可能有异常,也可能没有异常)
}catch(异常类型 异常名称变量){
//异常处理的具体细节【捕获异常】
}catch(异常类型2 异常名称变量2){
//异常处理的具体细节【捕获异常2】
}
一般捕获遵循的规则:
(1)上小下大
(2)如果只捕获小的,不捕获大的(Exception),会导致异常种类捕获不完整
(3)如果只捕获大的,不捕获小的(具体的Exception),会导致捕获异常无法具体定位
(4)如果捕获的顺序不合理,比如上大下小,【由于代码的执行顺序是由上至下】,会导致只捕获大的异常,之后的具体小的异常不再捕获【原因是异常只捕获一次】
3.try-catch-不匹配
核心要点:
如果没有捕获得到对应的异常,则try catch失效
4.常见的异常类型
5.try-catch-finally-exit
核心要点:
finally会在程序正常或是异常的情况都执行,作补充,但是有一个特例,就是在catch中加入System.exit(0)的行为,中断虚拟机,退出程序,则不执行finally语句
0是正常退出(写在try里面),1是异常退出(写在catch里面)
6.try-catch-finally-return
核心要点:
先执行finally,后执行return(debug调试)
7.多重catch块
异常
1.声明异常【系统声明】
throws
2.抛出异常【手工(人为)抛出】
throw
3.异常的分类
异常分两大类:Error,Exception
(1)错误 Error 定义:无法用代码去解决
(2)异常 Exception 定义:可以用代码去捕获(解决)
Exception分两类:检查时异常,运行时异常
(1)检查时异常(Checked Exception) 定义:代码运行前(编译时)必须处理
(2)运行时异常(Runtime Exception) 定义:代码编译时不强制性处理
如何快速评判是什么异常,光标点击异常,按住ctrl键双击点进去
Log4j
1.log4j
定义:开源日志记录工具
功能:实现以“文件”形式记录异常信息、程序正常运行的关键步骤信息
2.log4j实战
创建
复制
引入
新建
导包
运行
(1)只输出控制台
(2)只输出文件
(3)修改输出的时间格式
(3)修改文件名称
(4)日志级别顺序
debug < info < warn < error