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

时间:2015-01-25 10:34:10

标签: java java-7 try-with-resources resource-leak

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

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

FileInputStream将自动关闭,如果在关闭时生成错误,它将禁止该表达式。

因此,如果在关闭FileInputStream时抛出异常,由于异常将被禁止,资源未关闭,是否会产生资源泄漏?

1 个答案:

答案 0 :(得分:2)

  

因此,如果在关闭FileInputStream 表达式异常时生成,则由于表达式异常将被禁止,因此资源未关闭... < / p>

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

  

......会产生资源泄漏吗?

它可能会或可能不会造成泄漏,但您无能为力。如果您试图关闭资源,那么您已经完成了自己的工作。

但是JB Nizet makes a very important point:只有在try块(或附加到finally块内)抛出一些其他异常时才会禁止 。如果在try(或finally)期间没有例外,则会停止关闭资源赢得的异常。