java finally块_Java中finally块的要点是什么?

您提供的两个片段有很大不同,例如:当catch块本身抛出异常时,finally块仍将由其语义执行.

这是以下片段打印“最后!”,但不是“我怎么样?”:

try {

throw null; // throws NullPointerException!

} catch (Exception e) {

int oops = 1/0; // throws ArithmeticException!

} finally {

System.out.println("Finally!"); // still gets executed!

}

System.out.println("What about me???"); // doesn't get executed!

一般来说,try块的finally实际上总是被执行. try块之后的任何代码都没有这样的保证.

But what if my catch block is just a simple print statement?

仍然无法保证它不会扔东西.例如,某些东西仍可能出错异常详细消息的构造.

即使您尽最大努力保证catch代码是“安全的”并且try语句后面的代码将始终执行,那么问题就变成“为什么?”.为什么最后要避免,然后努力复制它的语义?

最后保证了语义,不需要代码的编写者或读者的证明负担.正因为如此,使用finally块来强制“清理”代码是不恰当的.使用最终保证正确性并增强可写性和可读性.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值