尝试使用资源:关闭 TWR 块中的资源时资源泄漏



我读到我们不需要显式关闭资源,它将被java本身关闭,假设我是否编写了代码。

try(FileInputStream fis = new FileInputStream("");){
  // code to to somethings
}

文件输入流将自动关闭,如果在关闭时生成错误,它将抑制该表达式。

因此,如果在关闭FileInputStream时抛出异常,因为异常将被抑制,因此资源没有关闭,它会生成资源泄漏吗?

因此,如果在关闭FileInputStream时生成表达式异常,因为表达式异常将被抑制,因此资源不会关闭...

您不知道它没有关闭,只是在关闭它时遇到了异常。

。会产生资源泄漏吗?

它可能会也可能不会造成泄漏,但您对此无能为力。如果您尝试关闭资源,则已完成工作。

但是 JB Nizet 提出了一个非常重要的观点:只有在 try 块(或附加到它的 finally 块中)抛出其他异常,才会抑制异常。如果在try(或finally)期间没有异常,则不会禁止关闭资源的异常。

相关内容

  • 没有找到相关文章

最新更新