黑马程序员技术交流社区
标题:
try {}里有return语句,try后的finally {}里的code会不会被执行?什么时候执行
[打印本页]
作者:
Jarc
时间:
2016-9-16 18:28
标题:
try {}里有return语句,try后的finally {}里的code会不会被执行?什么时候执行
求解释代码
public class Test {
public static void main(String[] args) {
System.out.println(new Test().test());;
}
static int test()
{
int x = 1;
try{
return x;
}
finally{
++x;
}
}
}
作者:
zhoubinjian
时间:
2016-9-16 19:51
finally块的语句在try或catch中的return语句执行之后,返回之前执行,也就是说return是等finally执行后才返回,所以值 应该是2
作者:
刘永川
时间:
2016-9-16 21:24
这个今天我也看到了 答案是1
我个人理解是 return 出去 1 然后 ++x.x的值已经变了 但是由于已经return了
所以 看到的值为1
个人见解 我也是自己猜的
作者:
YSL450125
时间:
2016-9-16 21:32
答案是1,执行到return语句后,会打开返回通道,将结果放进去,但是还没有完全返回,这个时候才执行finally语句,但是由于返回值已经蓄势待发,finally语句中 的代码不会影响返回值了.而且finally一般是用来释放资源,这样的代码应该只有考试的时候回出现
作者:
a623562486
时间:
2016-9-16 21:36
会执行,但是说之前还是之后就不合适了,可以说try执行完后return已经构成完成路径
作者:
somnus-sir
时间:
2016-9-16 21:51
YSL450125 发表于 2016-9-16 21:32
答案是1,执行到return语句后,会打开返回通道,将结果放进去,但是还没有完全返回,这个时候才执行finally语句, ...
同意这个观点
作者:
liuyuan_8023
时间:
2016-9-17 12:42
答案1 正解,return 返回和finally是同时进行,至于谁快谁慢就随他们了
作者:
litianji2016
时间:
2016-9-17 16:25
finally块在return之前执行
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2