一、注意事项
1、多个异常使用捕获如何处理
① 多个异常分别处理。
即每一个异常都使用一个 try-catch 捕获,然后进行处理。
② 多个异常一次捕获,多次处理。
即把异常都放入 try 里面,而 catch 里面处理写每一个异常的情况。
③ 多个异常一次捕获一次处理。
即把异常都放入 try 里面,而 catch 里面放入 所有异常的一个父类,来进行统一处理。
经常使用 一次捕获多次处理 方式,格式如下:
try{
编写可能会出现异常的代码
}catch(异常类型A e){ 当try中出现A类型异常,就用该catch来捕获.
处理异常的代码
//记录日志/打印异常信息/继续抛出异常
}catch(异常类型B e){ 当try中出现B类型异常,就用该catch来捕获.
处理异常的代码
//记录日志/打印异常信息/继续抛出异常
}
注意:这种异常处理方式,要求多个 catch 中的异常不能相同,并且若 catch 中的多个异常之间有子父类异常的关系,那么子类异常要求在上面的 catch 处理,父类异常在下面的 catch 处理。
2、运行时异常被抛出可以不处理。即不捕获也不声明抛出
运行时异常被抛出可以不处理,因为最后默认给虚拟机处理,会终止程序,什么时候不抛出运行时异常了,在来继续执行程序
3、如果 finally 有 return 语句,永远返回 finally 中的结果,避免该情况。
原因:因为 finally 中的语句都会被执行到,所以 finally 里面有 return,永远返回 finally 中的结果。
4、如果父类抛出了多个异常,子类重写父类方法时,抛出和父类相同的异常或者是父类异常的子类或者不抛出异常。
5、父类方法没有抛出异常,子类重写父类该方法时也不可抛出异常。此时子类产生该异常,只能捕获处理,不能声明抛出。
二、异常处理5个关键字
世界上最遥远的距离,是我在if里你在else里,似乎一直相伴又永远分离;
世界上最痴心的等待,是我当case你是switch,或许永远都选不上自己;
世界上最真情的相依,是你在try我在catch。无论你发神马脾气,我都默默承受,静静处理。到那时,再来期待我们的finally。