上一篇文章:Java异常机制概述
一、异常处理机制的分类
在Java应用程序中,异常处理机制为:抛出异常,捕捉异常。
(1)抛出异常
当一个方法出现错误引发异常时,方法创建异常对象并交付运行时系统,异常对象中包含了异常类型和异常出现时的程序状态等异常信息。运行时系统负责寻找处置异常的代码并执行。
(2)捕获异常
在方法抛出异常之后,运行时系统将转为寻找合适的异常处理器(exceptionhandler)。潜在的异常处理器是异常发生时依次存留在调用栈中的方法的集合。当异常处理器所能处理的异常类型与方法抛出的异常类型相符时,即为合适的异常处理器。运行时系统从发生异常的方法开始,依次回查调用栈中的方法,直至找到含有合适异常处理器的方法并执行。当运行时系统遍历调用栈而未找到合适的异常处理器,则运行时系统终止。同时,意味着Java程序的终止。
针对不同的异常类型,Java对处理的要求不一样:
(1)Error错误,由于不可捕捉,不可查询,Java允许不做任何处理。
(2)对于运行时异常RuntimeException不可查询异常,Java允许程序忽略运行时异常,Java系统会自动记录并处理。
(3)对于所有可查异常都可捕捉,Java程序自己处理。
二、捕获异常try、catch、finally
注意:finally不论程序如何执行都会执行到。
try{
//可能出现异常的业务代码
}catch(Exception1e1){
//异常处理1
}catch(Exception2e2){
//异常处理2
}catch(Exceptionnen){
//异常处理n...
}
finally{
//无论是否是否异常都会执行的地方
}
try、catch语句,try只有一个,catch可以有多个,也就是当有多个异常的时候,不需要编写多个try-catch模块,只要写一个try多个catch就可以。
三、try-catch-finally的执行顺序
有异常发生,假设语句1发生了异常,那么程序执行顺序语句1、异常处理、finally语句、正常语句。
如果没有异常发生,那么程序执行顺序语句1、语句2、语句n、finally语句、正常语句。