为了账号安全,请及时绑定邮箱和手机立即绑定

关于异常处理finally的问题

在try catch中,try catch之后的代码是一定要执行的,而try catch finally中,为什么要写finally呢?直接将finally中的代码写在异常处理块之后,不是一样会执行吗?

正在回答

3 回答

因为在try块中执行到a=5/0时就被catch块捕获,并没有执行到return,程序一路执行下去感觉并没有区别。假如你在catch块中最后加入return,你会发现用finally的依旧执行,而直接写的会报错,提示无法执行。


1 回复 有任何疑惑可以回复我~

通常情况下,一旦方法里执行到return语句的地方,程序立即结束该方法。因为finally块总会被执行,不管try块中是否出现异常,不管哪个catch块被执行,也不管try和catch块中执行了return语句。从而保证一定能回收try块中打开的物理资源。

1 回复 有任何疑惑可以回复我~
#1

彼时年少0 提问者

您好 我的意思是 try(a=5/0 return a)catch(除数不能为0)finally(System.out.print(a=-1))和try(a=5/0 return a)catch(除数不能为0) System.out.print("a=-1")这两个输出是没区别的 为什么要用finally 直接在后面写代码就可以啊 谢谢解答
2017-01-17 回复 有任何疑惑可以回复我~

如果没有异常就不会执行catch块的内容

0 回复 有任何疑惑可以回复我~
#1

彼时年少0 提问者

是的 我不懂的地方是finally中代码的作用,我将代码直接写在try catch之后 不也是会执行的吗 那么我还写finally干嘛呢?谢谢大神解答
2017-01-17 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409789    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

关于异常处理finally的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信