gpt4 book ai didi

java - 如何在 try-with-resource 语句中捕获 close 方法抛出的异常

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:41:38 25 4
gpt4 key购买 nike

我正在阅读 Java 中的 try-with-resource 语句,它可用于指定任意数量的资源。

try (Resource1 res1 = initialize_code; Resource1 res2 = initialize_code; ...) 
{
statement;
}

现在,当 try block 退出时(正常或异常抛出异常),将调用所有资源对象的 close 方法。但是一些 close 方法会抛出异常。如果 close 本身抛出异常,在那种情况下会发生什么?

最佳答案

But some close methods can throw exceptions.

是的,他们可以,你是对的。此外,资源以其初始化的相反顺序关闭。

What will happen if close method itself throws exception?

正如您提到的,一些close 方法也可以抛出异常。如果在正常执行 try block 时发生这种情况,则将异常抛给调用者。

但是当抛出另一个异常导致关闭时会怎样要调用的资源方法,close 方法之一抛出异常(实际上是重要性较低的异常)?

在这种情况下,原始异常被重新抛出,close 方法引起的异常也被捕获并附加为 supressed exception .这实际上是使用 try-with-resource 的优势之一,因为手动实现这种机制会很乏味。

try {
///statements.
} catch (IOException e) {
Throwable[] supressedExceptions = ex.getSupressed();
}

关于java - 如何在 try-with-resource 语句中捕获 close 方法抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com