为什么尝试..最后阻止未将原始异常注册为抑制?
2022-09-01 07:52:48
使用以下代码:
try {
throw new RuntimeException ("main");
}
finally {
throw new RuntimeException ("finally");
}
我得到这个结果:
Exception in thread "main" java.lang.RuntimeException: finally
at test.main(test.java:12)
但是,随着 Java 7 中禁止显示的异常的添加,当块本身因异常而失败时,该语言将原始的“main”异常注册为抑制状态难道不是合乎逻辑的吗?目前,我必须手动模拟这个:finally
try {
throw new RuntimeException ("main");
}
catch (RuntimeException exception) {
try {
throw new RuntimeException ("finally");
}
catch (RuntimeException exception2) {
exception2.addSuppressed (exception);
throw exception2;
}
}
接收更有用的(用于了解正在发生的事情)结果:
Exception in thread "main" java.lang.RuntimeException: finally
at test.main(test.java:13)
Suppressed: java.lang.RuntimeException: main
at test.main(test.java:9)
编辑:为了澄清我想知道什么。当前的Java版本是8,抑制的异常不是一个全新的功能。但仍然没有将它们合并。有什么东西可以阻止这种情况发生吗?try..finally