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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

假如在捕获异常的try块中调用return,还会执行finally吗

23 个回复

倒序浏览
点开图片一块就明白了e
代码也附上

  1. public class Try_Catach_Finally {
  2.         public static void main(String[] args) {
  3.                 System.out.println(method(null));
  4.         }
  5.         public static int method(String[] args) {
  6.                 try {
  7.                         int i=1/0;
  8.                         return 0;
  9.                 } catch (Exception e) {
  10.                         System.out.println("run in catch");
  11. //                        return 2;``
  12.                 }finally{
  13.                         System.out.println("run in finally");
  14.                 }
  15.                 System.out.println("run in over");
  16.                 return 1;
  17.         }
  18. }
复制代码

其实自己写一个简单Demo就明白
finally  在任何情况下都要执行
如果在finally 之前有rerun value;执行   看清一定是执行哦,仅仅存在还不行,必须在程序运行过程中执行了,在执行完finally之后才不会继续执行

2014-09-15_214044.png (107.03 KB, 下载次数: 145)

2014-09-15_214044.png

2014-09-15_213805.png (114.12 KB, 下载次数: 143)

2014-09-15_213805.png

评分

参与人数 1技术分 +1 收起 理由
付江涛 + 1 赞一个!

查看全部评分

回复 使用道具 举报
肯定的告诉 你  除了 System.exit(0);   要不都会执行
回复 使用道具 举报
不会,return直接跳出try块了。
回复 使用道具 举报
finally语句在return语句之后执行,在return返回之前执行。黑马视频上有讲的哦,应该是基础的异常处理那块
回复 使用道具 举报
还没学到这一块
回复 使用道具 举报
daoqin 高级黑马 2014-9-16 08:57:22
7#
一定会执行,因为如此设计的
回复 使用道具 举报
会的!!!!
回复 使用道具 举报
zhappy 发表于 2014-9-16 08:37
不会,return直接跳出try块了。

除了System.exit(0)退出,其他情况都会执行
回复 使用道具 举报
finally是什么意思,你告诉我,其实我也不知道,经过我有道翻译我发现原来是“最后”的意思,这样这个问题就豁然开朗了。“最后”顾名思义就是某件事的结尾,就是这件事要结束就必须要经过这个“最后”。如果某个动作都没有执行,那么它就没资格称为最后。故答案是要执行。
回复 使用道具 举报
视频有说,finally是一定会执行的部分
回复 使用道具 举报
cherry@cookie 来自手机 中级黑马 2014-9-16 11:17:49
12#
楼上正解!
回复 使用道具 举报
会执行,你找个例子测试下就明白了
回复 使用道具 举报
MeryStyle 来自手机 中级黑马 2014-9-16 13:28:26
14#
只要是try块的代码执行了,就一定会执行后面的finally块代码的。,,,最后两句代码不可达吧~
回复 使用道具 举报
ooEye 中级黑马 2014-9-16 13:34:00
15#
会执行,我的理解是出现异常和return都是要跳出try代码块的,所以finally一定会执行
回复 使用道具 举报
lipc 中级黑马 2014-9-16 17:34:29
16#
careit 发表于 2014-9-15 21:44
点开图片一块就明白了e
代码也附上

多谢:lol   。。。
回复 使用道具 举报
谢建平 发表于 2014-9-16 08:26
肯定的告诉 你  除了 System.exit(0);   要不都会执行

除了System.exit(0) 之外 都会执行finally语句,然后才是执行return。
回复 使用道具 举报
lipc 发表于 2014-9-16 17:34
多谢   。。。

一起学习
在回复中重温
回复 使用道具 举报
谢建平 发表于 2014-9-16 08:26
肯定的告诉 你  除了 System.exit(0);   要不都会执行

很肯定的告诉你,这句话毕老师说过
回复 使用道具 举报
finally 是必须会执行的代码 所以 不管try 有没有执行完 finally是一定会执行的
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马