是否将finally块中抛出的异常添加到抑制异常列表中?

Feu*_*mel 5 exception java-7

Java 7添加了抑制异常的概念.在试穿与资源声明补充说,通过资源的抛出的异常close()的方法来抑制例外列表中,如果在另一个例外是已经传播了堆栈他们发生.

对于try语句的finally块中抛出的异常,会发生同样的情况吗,如下例所示?

try {
    throw new RuntimeException("Exception in try block.");
} finally {
    throw new RuntimeException("Exception in finally block.");
}
Run Code Online (Sandbox Code Playgroud)

Jea*_*sky 5

没有.抑制异常的想法是它们最终发生在隐含的资源尝试中.如果您实际编写了自己的finally块,则抛出的异常不会被视为抑制异常.请注意,如果您同时尝试使用资源和您自己的finally块,则仍会抑制具有资源close()异常的尝试,并且您自己的finally块将被视为常规异常.

作为记住这一点的一种方式,Java力求向后兼容.这意味着最终阻止您编码工作的例外情况与他们总是一样.只有使用资源尝试的隐式最终生成新的抑制异常.