七、异常机制
原理:当发现异常时,异常会回溯到main方法。
原则:能自己处理的异常自己处理
当发现如IO引起的异常时,应把异常抛到传递IO地址的层上。
异常方式:异常链和异常丢失
1)异常链
原因:当自己实现异常转译的时候,直接抛出的异常给另一个子系统处理的话,子系统只能抛出比该异常同级或更低级的异常,不方便添加更多的信息。
异常链:通过对异常原因的再次封装 得到更高级的异常,从而使子系统更够添加更多的异常信息,得到更加完整的异常信息链。
实例:
try{
access the database
}catch(SQLException e){
Throwable se = new ServletException("database error") ;
se.initCause(e) ;
throw se ;
}
2)异常丢失
原理:Java的一个缺陷,当finally中嵌套着异常,该异常将会覆盖try中的异常。
实例:
public static void main(String[] args) {
try{
try{
new ATest().AException();
}finally{
}new ATest().BException();
}catch(Exception e){
e.printStackTrace();
}}