try {}里有一个return语句,那么紧跟在这个try后的finally {}里
这是一个很有趣的问题,我测试的结果是:是在return中间执行。 我在网上搜寻了一些资料,下面是参考代码:
@SuppressWarnings("static-access" System.out.println("结果: " +
i = 1 System.out.println("try里面的i : " + } System.out.println("进入finally..." ++ System.out.println("fianlly里面的i : " + }
输出结果: try里面的i : 121
下面是我在debug时,抓取的图片: 上图是程序执行到try模块里面:变量"i"的值的情况。 上图是程序执行到了try模块中的return语句时,按下F5键,进入到finally模块,执行finally模块中的语句后,变量"i"的值发生了变化。 上图是当程序执行完finally模块后,返回到return代码块。 但是在最后的运行效果中,我们看到的结果是:1,而不是我们想象中的:2 为什么会出现这样的情况: 上面我认为比较靠谱的一种解释。 还有一种解释为: 主函数调用子函数并得到结果的过程,好比主函数准备一个空罐子,当子函数要返回结果时,先把结果放在罐子里,然后再将程序逻辑返回到主函数。所谓返回,就是子函数说,我不运行了,你主函数继续运行吧,这没什么结果可言,结果是在说这话之前放进罐子里的。
======================================================== More reading,and english is important. I'm Hongten 大哥哥大姐姐,觉得有用打赏点哦!多多少少没关系,一分也是对我的支持和鼓励。谢谢。Hongten博客排名在100名以内。粉丝过千。Hongten出品,必是精品。 E | hongtenzone@foxmail.com ?B |? ======================================================== (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |