黑马程序员技术交流社区
标题:
面试题,异常finally
[打印本页]
作者:
cxy374100657
时间:
2016-3-25 23:48
标题:
面试题,异常finally
如果catch中有return,finally里边的代码一定会执行吗?如果会,只在return之前,还是return后?
作者:
dbymzss
时间:
2016-3-25 23:55
会的...在return之前执行,,,
作者:
aomingchao
时间:
2016-3-26 00:15
程序遇到return 就不会再执行下面的代码啦!!
作者:
y569489124
时间:
2016-3-26 08:28
一定会执行, 在之前 或者说之间..
作者:
305450674
时间:
2016-3-26 08:44
finally内的代码只有在jvm退出的时候不执行,所以只要jvm没退出就一定会执行,但是return已经建立了返回路径,虽然要执行finally里面的代码,但是并不会影响输出的结果
作者:
梦→拼搏
时间:
2016-3-26 10:00
会的 ...
作者:
as9600
时间:
2016-3-26 11:10
一定执行且在return之前
作者:
adomwon
时间:
2016-3-26 12:32
正确的解释:
return先去执行,建立返回路径,然后再去执行finally的代码,最后return再彻底返回.
通俗来说,finally是return的最后一口气,return先把生前该办的事给办了(将return的语句体打包,建立好返回路径),然后再看看有没有什么遗愿(看有没有finally的语句体,有的话就执行),最后再彻底挂掉;
值得注意的是,比如return里的语句体是int x = 10;finally里的语句体是int x = 20;那么返回路径里x的返回值是10;这段代码执行完毕后,x的值为20,而方法已经返回,这个已经拿不到了,所以在finally里进行赋值是没有意义的,一般是用来关流释放资源
作者:
wangze
时间:
2016-3-29 11:10
会执行,是在return之前执行的。
作者:
hydra
时间:
2016-3-29 11:23
在return之前执行
作者:
dxw
时间:
2016-3-29 11:57
不错,学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2