细琢磨,try-catch-finally执行顺序与返回值是多少?

public static int test4(){
    //finally 语句块中有 return 语句
    int i = 1;
    try{
        i++;
        System.out.println("try block, i = "+i);
        return i;
    }catch(Exception e){
        i++;
        System.out.println("catch block i = "+i);
        return i;
    }finally{
        i++;
        System.out.println("finally block i = "+i);
        return i;
    }
}

运行结果:

try block, i = 2
finally block i = 3
3

这个提示表示的是finally里的异常信息,也就是说一旦finally里发生异常,try、catch里的异常信息即被消化掉了,也达不到异常信息处理的目的。

总结:try中是应用代码,catch是异常捕捉处理,finally通常用来进行资源释放、流关闭等。
执行顺序为try-catch-finally(try中抛了异常),try-finally(try中未抛异常);
只有方法末尾处返回时,返回值由try-catch-finally决定,如果try、catch中有return语句,finally中没有return,那么在finally中修改引用类型、静态变量将会对try 、catch中return值有影响,基本类型和包装类型无影响。
尽量不要在finally中使用return语句,如果使用的话,会忽略try、catch中的返回语句,也会忽略try、catch中的异常,屏蔽了错误的发生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值