2018-07-20 Java异常处理
捕获异常
通常我们使用try catch finally 来处理Java的异常
try{
可能发生异常的代码块
}catch(可以捕获的异常1){
处理异常1的代码
}catch(可以捕获的异常2){
处理异常2的代码
}finally{
处理完所有异常后一定会执行的代码。
在这里注意的事。如果在这里没有出现异常,最终也会执行这行代码
}

如果try中的代码没有异常,代码将会运行,但是运行完try之后,finally里面的程序代码也会运行,所以无论异常与否,finally中的程序代码都将运行实现
你看,这是一个用整数去除以0时,系统报出的异常。在这里我们就可以清晰地看到这个异常是什么意思,并且该异常出现的位置都已经显示出来了,如此我们就可以直接在代码中定位到该位置并且对错误进行修改,这就是异常处理机制最大的好处:跟踪错误代码。并且,还有一个比较重要的好处,就是对于一些可修复的程序来说,我们可以直接捕获到这个异常,并且直接修改修复它,从而避免了系统崩溃的发生。同样的例子,我们进行修改如下:
package testabstractclass;
import java.io.IOException;
public classTest1{
public static void main(String[] args) throws IOException{
int i = 1;
try {
i = i/0;
} catch (Exception e) {
i += 1;
}
System.out.println(i);
}
}
上面的程序运行打印结果为2,为什么没有报错呢,因为我们把出错的try中的代码捕获了,然后程序执行了catch中的代码i+1
而finally中的代码总是要执行的,然后就打印出结果2
Throwable是所有异常的父类
