如果catch块或finally块中有异常会发生什么?

6

在异常处理中,如果catch块或finally块包含Exception会发生什么?


2
https://dev59.com/f2865IYBdhLWcg3whO3E#3779677 - Alya'a Gamal
那个异常被抛出了。 - Peter Lawrey
为什么不试一下呢?实验是最好的老师。 - Gimby
2个回答

5

最终块异常会掩盖原始异常。

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

更多详细信息请参见此处此处


遮盖(mask)比覆盖(override)更好。 - Juned Ahsan
@JunedAhsan:是的,已经更正了。 - Abimaran Kugathasan
http://www.youtube.com/durgaeducation,在这里你可以找到所有关于异常处理的案例。 - Butchi Reddy Velagala

1
根据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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接