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)
没有.抑制异常的想法是它们最终发生在隐含的资源尝试中.如果您实际编写了自己的finally块,则抛出的异常不会被视为抑制异常.请注意,如果您同时尝试使用资源和您自己的finally块,则仍会抑制具有资源close()异常的尝试,并且您自己的finally块将被视为常规异常.
作为记住这一点的一种方式,Java力求向后兼容.这意味着最终阻止您编码工作的例外情况与他们总是一样.只有使用资源尝试的隐式最终生成新的抑制异常.
归档时间: |
|
查看次数: |
412 次 |
最近记录: |