【问题标题】:What will happen if catch block or finally block having some exception? [duplicate]如果 catch 块或 finally 块有一些异常会发生什么? [复制]
【发布时间】:2014-02-13 09:28:45
【问题描述】:

在异常处理中,如果catch块或者finally块出现异常会怎样?

【问题讨论】:

标签: java exception-handling


【解决方案1】:

最终阻止异常将掩盖原始异常。

当在 catch 块或 finally 块中抛出一个新异常并将传播出该块时,当前异常将在新异常向外传播时中止(并被遗忘)。

查看herehere 了解更多详情

【讨论】:

  • 掩码会比覆盖好。
  • @JunedAhsan:是的,已更正。
  • youtube.com/durgaeducation ,在这里可以找到所有异常处理的案例
【解决方案2】:

根据 JLS 14.20.2。 try-finally 和 try-catch-finally 的执行

如果 catch 块由于原因 R 突然完成,则执行 finally 块。然后有一个选择:

如果 finally 块正常完成,则 try 语句由于原因 R 突然完成。

如果 finally 块由于原因 S 突然完成,则 try 语句由于原因 S 突然完成(并且原因 R 被丢弃)。

finally 块可能会抛出异常,如果是这样,try 或 catch 块抛出的任何异常都会丢失。

参考:http://docs.oracle.com/javase/specs/jls/se7/html/jls-14.html#jls-14.20.2

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2017-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多