public int test() {
int x = 1;
try {
++x;
return x;
} finally {
++x;
}
}
为什么执行test()返回的值是2,而不是3,finally不是在return之前执行吗?
这个与jvm的堆栈有关吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
这个debug一下就知道了啊,先执行到return x,所以test()的return值就是2,return完之后才跑的final block,之后i又加了1和return出去的值没有关系。
这种问题baidu以下就找到答案啦,有人分析得非常清楚了: Java finally语句到底是在return之前还是之后执行?
先执行到return,这时候return的值已经确定了。
finally是在真正return之前,不过是在执行到return之后,所以return的值没有改变。