1.什么时异常
在java中,将程序执行过程中发生的不正常的行为称为异常
2.
异常体系结构
异常分为受查异常编译时异常(编译不能通过,需要处理),和非受查异常运行时异常
3.异常处理
防御式和事后处理
主要关键字throw,try,catch,finally,throws
4.异常捕获
4.1异常声明throws
当前方法不处理异常,提醒方法的调用者处理异常
处在方法声明的后面
static 类型 方法名 throws 异常 {}
throws必须跟在方法的参数列表之后,
声明的异常必式exception或者它的子类
如果有多个异常,平级的话都写上,父子的话只写父类
4.2try catch
try{
可能出异常的代码块
}catch(异常类型){
try中抛异常,并且被cathch捕获处理,然后跳出catch
}[catch(){
如果上面捕获了就不走这一步
}final{
此处一定执行
}]
对于比较严重的异常,应该让程序崩溃防止,造成更严重的后果。
对于不太严重的问题,可以记录错误日志。
对于可能会恢复的问题可以尝试重启
4.3finally
用来解决一些无论是否异常都需要处理的问题。比如资源回收等等
finally后面的语句必定会执行
5.异常处理流程总结
先执行try中代码
如果try中代码出现异常,就会结束try中的代码,看和catch中的代码是否匹配
如果找到匹配的异常,就会执行catch中的代码
没找到就上传到上层调用者
无论是否找到匹配的异常类型,都会执行finally
如果没有抛出异常,或者异常被处理了,那么try catch finally之后的代码也会被执行
上层调用者如果无法处理会一直上传知道到达jvm处。
6.自定义异常
class 异常名 extends 父类异常{
throw new 异常名
}
自定义异常通常会继承exception 或者runtimeexception
前者式受查异常后者为非受查