A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© cxy374100657 中级黑马   /  2016-3-25 23:48  /  663 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

如果catch中有return,finally里边的代码一定会执行吗?如果会,只在return之前,还是return后?

10 个回复

倒序浏览
会的...在return之前执行,,,
回复 使用道具 举报
程序遇到return 就不会再执行下面的代码啦!!
回复 使用道具 举报
一定会执行, 在之前 或者说之间..
回复 使用道具 举报
finally内的代码只有在jvm退出的时候不执行,所以只要jvm没退出就一定会执行,但是return已经建立了返回路径,虽然要执行finally里面的代码,但是并不会影响输出的结果
回复 使用道具 举报
梦→拼搏 来自手机 中级黑马 2016-3-26 10:00:38
地板
会的  ...
回复 使用道具 举报
as9600 中级黑马 2016-3-26 11:10:12
7#
一定执行且在return之前
回复 使用道具 举报
正确的解释:
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:46
9#
会执行,是在return之前执行的。
回复 使用道具 举报
hydra 中级黑马 2016-3-29 11:23:42
10#
在return之前执行
回复 使用道具 举报
dxw 中级黑马 2016-3-29 11:57:34
11#
不错,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马