异常执行顺序-try catch finally return

今天在处理自定义异常的时候,回看了下异常的基本知识

这里主要说一下try catch finally的执行顺序:

try无异常,执行try代码体和finally

try有异常,执行try代码体和catch代码体,finally

try有返回值,finally无返回值,则返回值是try中的返回值

try有返回值,finally也有返回值,则返回值是finally的返回值,也就是finally会覆盖try的返回值

catch同理,finally无返回值,则使用catch的返回值,如果finally有返回值,则使用finally的返回值

总结:finally中如果包含return,那么程序将在这里返回,而不是try或catch中的return返回,返回值就不是try或catch中保存的返回值了

例:

int intB=10;
try{
    intB=9;
    int intC=intB/0;
    System.out.println("try intB:"+intB);
    return intB;
}catch (Exception ex){
    intB=8;
    System.out.println("catch intB:"+intB);
    return intB;
}finally {
    intB=7;
    System.out.println("finally intB:"+intB);
    //如果没有这句话,则返回值8,加上这句话,返回值7
    return intB;
}

无加红语句结果:

catch intB:8
finally intB:7
返回的intB值:8

如果加上加红语句:

catch intB:8
finally intB:7
返回的intB值:7

猜你喜欢

转载自blog.csdn.net/qq_35129986/article/details/128904667