黑马程序员技术交流社区

标题: 关于finally [打印本页]

作者: 郭娇珍    时间: 2013-1-2 23:38
标题: 关于finally
方法里有一个return 语句,那么紧跟在这个try后的finally{}里的code会不会执行?如果执行那么return 语句和finally{}里的code谁先执行

作者: 冉世友    时间: 2013-1-2 23:47
个人感觉会执行,而且finally{}里的code后执行

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

为什么会先执行finally呢
作者: 王玮    时间: 2013-1-3 01:03
补充个 exit()的时候就不执行了~
作者: 何竹冬    时间: 2013-1-3 03:12
本帖最后由 何竹冬 于 2013-1-3 03:24 编辑

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

我也不知道,  这个应该没有为什么吧,就好比1+1=2一样




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2