加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

try {}里有一个return语句,那么紧跟在这个try后的finally {}里

发布时间:2020-12-14 06:30:23 所属栏目:Java 来源:网络整理
导读:这是一个很有趣的问题,我测试的结果是:是在return中间执行。 我在网上搜寻了一些资料,下面是参考代码: @SuppressWarnings("static-access" System.out.println("结果: " + i = 1 System.out.println("try里面的i : " + } System.out.println("进入final

这是一个很有趣的问题,我测试的结果是:是在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 |?

========================================================

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读