try,catch,finally和return的执行顺序

第一种情况

public static int test(){
int a=1;
}try{
return a+=1;
}finally{
system.out.println("finally")
}
执行结果是
finally
2
先执行try里面的a+=1,即a=2;这时候不会立刻返回,先执行finally里的语句,在返回try执行return

第二种情况
public static int test(){
int a=1;
}try{
return a+=1;
}finally{
system.out.println("finally")
a=10;
}
执行结果跟第一个一样,原因是finally里只是定义了一个a的值,return里a的值已经确定了
如果是对对象赋值,结果就不一样了

第三种情况
public static int test(){
int a=1;
}try{
return a+=1;
}finally{
system.out.println("finally")
return 100;
}
执行结果
finally
100
如果在finally里有return,那么在执行finally时,直接就return出去,不需要再回到try里面执行return

第四种情况
public static int test(){
int a=1;
}try{
a=a/0;
return a+=1;
}catch{
return a+=10;
}finally{
system.out.println("finally")
}
执行结果
finally
11
当try发生异常,那么里面的return都不会执行,会执行catch里的语句,此时a的值为11,在返回之前先执行finally里的语句,之后再return

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值