为了账号安全,请及时绑定邮箱和手机立即绑定

catch中有return语句,finally中语句执行问题

catch中有return语句,finally中语句执行问题

开满天机 2019-03-21 18:19:29
在catch语句块中有return语句,finally中的语句依旧会执行,有的说finally其实是在return中执行的,但是return不是原子性的吗,中间又如何执行finally中的代码int a = 10;try {    System.out.println(a / 0);    a = 20;} catch (Exception e) {    a = 30;    return a;} finally {    a = 40;}return a;最终返回的是30,而不是40
查看完整描述

2 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

finally中的语句肯定会执行,这里最终返回的是30,原因在于,在return a执行的时候,先把a的值返回给主调函数,再去执行finally中的代码,然后最终返回,虽然在finally中a的值改变为40了,但是a的值在这之前已经返回给主调函数了。如果这里要想返回40,可以在a = 40;后面加一句 return a;


查看完整回答
反对 回复 2019-04-17
  • 2 回答
  • 0 关注
  • 574 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信