黑马程序员技术交流社区

标题: try。。catch的问题 [打印本页]

作者: Qiubang    时间: 2016-1-26 22:16
标题: try。。catch的问题
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?

作者: 洋葱头头    时间: 2016-1-27 08:10
finally语句块必须执行  finally先执行
作者: 参禅悟道    时间: 2016-1-27 10:01
本帖最后由 参禅悟道 于 2016-1-27 10:49 编辑

finally肯定会执行的:其实写个例子就知道上面这张图就是最好的证明,你自己把代码写一遍,设个断点,走一遍就什么都知道了。

不好意思哈,这个用C#代码写的,因为习惯了。
不过代码基本原理都一样,写法不同而已。
第二张图片又用java执行了一下。try,finally分别都打印出来了

QQ截图20160127100229.png (78.87 KB, 下载次数: 13)

C#

C#

QQ图片20160127104807.png (113.67 KB, 下载次数: 20)

java

java

作者: yi651312197    时间: 2016-1-27 11:24
楼上讲解的详细
作者: Qiubang    时间: 2016-1-28 17:51
参禅悟道 发表于 2016-1-27 10:01
finally肯定会执行的:其实写个例子就知道上面这张图就是最好的证明,你自己把代码写一遍,设个断点,走一 ...

谢谢,明白了
作者: 梁志斌    时间: 2016-1-28 18:21
只有一种结果 try语句中强制退出jvm  System.out.exit【0】; finally就执行不到
作者: mikulove    时间: 2016-1-28 19:08
finally先执行。
作者: j6819236    时间: 2016-1-29 19:33
finally代码块先执行,但是return是先将返回路径计算好,并没有执行返回。
例子:
  1. public int test() {
  2.     try {
  3.            int num=10;
  4.            return num;
  5.      }finally {
  6.            num=20;   
  7.      }
  8. }
复制代码

返回结果会是10,但仍然是finally语句块先执行
作者: 悠悠天下    时间: 2016-1-29 21:53
厉害 学习一下




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