异常链
public void test1() throws DrunkException{
throw new DrunkException("喝酒别开车");
}
public void test2(){
try{
test1();
}
catch(DrunkException e){
RuntimeException newExc = new RuntimeException("司机一滴酒");
newExc.initCause(e);
throw newExc;
}
}
- throws 用在方法后,用来抛出异常
- throw 用在方法内抛出异常
- try…catch…语句块如果当前解决不掉,捕获到的异常包装成上级错误类型,然后在抛出
- 用户可以自定义异常,继承于就近异常或者Exception异常。
- try…catch…finally finally 用于对try中的语句进行处理,无论是否抛出异常。例如,文件流的关闭。
经验总结(来自慕课老师指导)
- 处理运行异常时,采用逻辑去合理规避同时辅助try-catch处理。
- 多重catch块后可以添加一个catch (Exception )捕获遗漏的异常
- 对于不确定代码也可以加上try-catch,处理潜在异常
- 尽量去处理异常,切不要只是简单的调用printStackTrace() 去打印输出。
- 具体如何处理异常,要根据不用的需求和异常类型去决定。
- 尽量添加finally语句块去释放占用的资源。(网络连接,数据库的连接)