gpt4 book ai didi

java - 关闭InputStream即使抛出也会释放资源吗?

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

只是一个简单的问题。鉴于此代码:

try {
// operation on inputstream "is"
} finally {
try {
is.close();
} catch (IOException ioe) {
//if ioe is thrown, will the handle opened by 'is' be closed?
}
}

如果 close() 抛出,文件句柄是否仍然存在(并泄漏),或者它是否已经关闭?

最佳答案

不可靠。如果 is.close() 抛出,is 可能不会被标记为关闭。无论如何,您对此无能为力。您不知道 is 的内部结构。 Java 7 等价物只是隐藏了这个问题。

try (InputStream is = Files.newInputStream(...)) {
// Stuff with is.
} catch (IOException is) {
... // Handles exceptions from the try block.
} // No finally. Handled by try-with-reources

如果自动关闭抛出异常,则异常是被抑制的异常,您永远不会知道文件句柄是否或何时被回收。

关于java - 关闭InputStream即使抛出也会释放资源吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19259645/

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