11. 基于自动化–JAVA异常机制
一、异常
异常(Exception):代码运行过程中出现的非正常情况
异常作用:告诉代码编写人员代码运行中出现的错误或可能出现的问题
异常分类:
二、抛出异常
public static double method(int value) { if(value == 0) { throw new ArithmeticException("参数不能为0"); //抛出一个运行时异常 } return 5.0 / value; }
三、捕获异常
try { //包含可能会出现异常的代码以及声明异常的方法 } catch (ClassCastException e) { //捕获指定异常并进行处理 }catch(Exception ex) { //捕获指定异常并进行处理 }
四、finally语句块
//第一种形式 //第二种形式 try { try { //执行程序代码,可能会出现异常 //执行程序代码,可能会出现异常 }catch(Exception e) { }finally { //捕获异常并处理 //必执行的代码 }finally { } //必执行的代码 }
try-catch-finally的执行流程
try块中引起异常,异常代码之后的语句不再执行,若被catch块捕获,执行匹配的catch块,然后执行finally语句。若catch块不能捕获异常,则执行finally语句,之后将异常传递给这个方法的调用者。
try-finally的执行流程
try块中引起异常,异常代码之后的语句不再执行,直接执行finally语句。 try块没有引发异常,则执行完try块就执行finally语句。
try-finally可用在不需要捕获异常的代码,可以保证资源在使用后被关闭。例如IO流中执行完相应操作后,关闭相应资源;使用Lock对象保证线程同步,通过finally可以保证锁会被释放;数据库连接代码时,关闭连接操作等等。