一、异常

异常(Exception):代码运行过程中出现的非正常情况

异常作用:告诉代码编写人员代码运行中出现的错误或可能出现的问题

异常分类:

image.png

二、抛出异常

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可以保证锁会被释放;数据库连接代码时,关闭连接操作等等。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注