public class TestFinal{
public static void main(String args[]){
System.out.println(doSomething());
}
public static int doSomething(){
try{
return 1;
}catch(Exception e){
}finally{
return 2;
}
}
}
4 回答
已采纳
乔小欠儿
TA贡献18条经验 获得超15个赞
我的理解是,当走到try里时return返回的1被存在一个临时的变量里,此时若没有发生异常,一定会进入到finally代码块里(听我这的一个老工程师说底层其实是使用了goto方法进入到finally里的)。此时finally里再次使用return把2赋到了刚才存储1的临时变量里。然后返回的值就变成了2。
不过在项目中是不推荐在finally里使用return的
Caballarii
TA贡献1123条经验 获得超629个赞
当try中语句return之前会先执行finally中的语句,但这里在finally里面return了,所以实际不会return 1,而是return 2
最后结果是2
添加回答
举报
0/150
提交
取消