- ① 多个异常使用捕获如何处理。
- 多个异常分别处理。
- 多个异常一次捕获,多次处理(推荐)。
- 多个异常一次捕获一次处理。
try{
编写可能会出现异常的代码
}catch(异常类型A e){ // 当try中出现A类型异常,就用该catch来捕获.
处理异常的代码
//记录日志/打印异常信息/继续抛出异常
}catch(异常类型B e){ // 当try中出现B类型异常,就用该catch来捕获.
处理异常的代码
//记录日志/打印异常信息/继续抛出异常
}
注意:这种异常处理方式,要求多个 catch 中的异常不能相同,并且若 catch 中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的 catch 处理,父类异常在下面的 catch 处理。
- ② 运行时异常被抛出可以不处理,即不捕获也不声明抛出。
- ③ 在程序没有发生异常的时候,try 语句块中有 return 语句,也有 finally 语句,先执行 finally 语句,再执行 return 语句。
- ④ 在程序发生异常的时候,catch 语句块中有 return 语句,也有 finally 语句,先执行 finally 语句,再执行 return 语句。
- ⑤ 如果 finally 中有 return 语句,永远返回 finally 中的 return 结果( 避免该情况 )。
- ⑥ 如果父类方法抛出了多个异常,子类重写父类方法的时候,抛出的和父类方法相同的异常或者是父类方法抛出异常的子类或者不抛出异常( 针对编译时异常而言 )。
- ⑦ 如果父类方法没有抛出异常,则子类重写父类方法的时候也不可以抛出异常,此时,如果子类方法中产生了编译时异常,则只能捕获,而不能声明抛出。