有return的情况下try catch finally的执行顺序(最有说服力的总
有return的情况下try catch finally的执行顺序(最有说服力的总结)标签:?编译器stringclass测试 2012-10-13 17:25? 74825人阅读? 评论(20)? 收藏? 举报 结论: ?
下面是个测试程序 public class FinallyTest { public static void main(String[] args) { System.out.println(new FinallyTest().test());; } static int test() { int x = 1; try { x++; return x; } finally { ++x; } } } 结果是2。 分析:<strong><em><span style="white-space: pre;"> </span>在try语句中,在执行return语句时,要返回的结果已经准备好了,就在此时,程序转到finally执行了。 在转去之前,try中先把要返回的结果存放到不同于x的局部变量中去,执行完finally之后,在从中取出返回结果, 因此,即使finally中对变量x进行了改变,但是不会影响返回结果。 它应该使用栈保存返回值。</em></strong> (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |