[英]How to catch exception thrown by close method in try-with-resource statement
我正在阅读Java中的try-with-resource
语句,它可用于指定任意数量的资源。
try (Resource1 res1 = initialize_code; Resource1 res2 = initialize_code; ...)
{
statement;
}
现在,当try块退出时(通常或异常抛出异常),将调用所有资源对象的close
方法。 但是一些close
方法会抛出异常。 如果close
本身抛出异常会在该场景中发生什么?
但是一些接近的方法会抛出异常。
是的,他们可以,你是对的。 资源也按其初始化的相反顺序关闭。
如果
close
方法本身抛出异常会发生什么?
正如您所提到的,一些close
方法也可以抛出异常。 如果在正常执行try块时发生这种情况,则会向调用者抛出异常。
但是,当另一个异常被抛出的东西,造成close
资源的方法被调用,以及一个close
方法抛出一个异常(重要性较低的例外实际上)?
在这种情况下,原始异常会被重新抛出,并且close
方法引起的异常也会被捕获并作为被抑制异常附加。 这实际上是使用try-with-resource的优势之一,因为实现这样的机制将是繁琐的手工实现。
try {
///statements.
} catch (IOException e) {
Throwable[] supressedExceptions = ex.getSupressed();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.