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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭娇珍 中级黑马   /  2013-1-2 23:38  /  1573 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

方法里有一个return 语句,那么紧跟在这个try后的finally{}里的code会不会执行?如果执行那么return 语句和finally{}里的code谁先执行

点评

这类问题,动手写DEMO就OK 了。  发表于 2013-1-3 01:08

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 呵呵 ,

查看全部评分

8 个回复

倒序浏览
个人感觉会执行,而且finally{}里的code后执行

因为finally里的代码是无论如何都会执行的
回复 使用道具 举报
会执行的,即使你在try里使用了return语句,这个我做过测试
回复 使用道具 举报
哪个先执行呢
回复 使用道具 举报
  finally中的代码是“总是执行”。
  当方法正常执行时,到了finally后,那么就执行finally中的代码。如果在到达finally之前,方法要返回(正常返回或异常返回),那么finally会插入执行,执行完finally之后,方法继续完成返回动作。
回复 使用道具 举报
张权 发表于 2013-1-3 00:26
  finally中的代码是“总是执行”。
  当方法正常执行时,到了finally后,那么就执行finally中的代码。 ...

为什么会先执行finally呢
回复 使用道具 举报
补充个 exit()的时候就不执行了~
回复 使用道具 举报
本帖最后由 何竹冬 于 2013-1-3 03:24 编辑

呵呵,这个视频里有讲到的,finally表示总是被执行,遇到return的时候会先执行finally中的代码在返回。
finally只有一种情况不会执行,当调用System.exit(0);的时候不会执行finally因为程序已经结束了。
回复 使用道具 举报
郭娇珍 发表于 2013-1-3 00:34
为什么会先执行finally呢

我也不知道,  这个应该没有为什么吧,就好比1+1=2一样
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马