【问题标题】:Try with Resources: Resource leak while closing resources in TWR block尝试使用资源:关闭 TWR 块中的资源时资源泄漏
【发布时间】:2015-01-25 10:34:10
【问题描述】:

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

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

FileInputStream 将被自动关闭,如果在关闭时产生错误,它将抑制该表达式。

那么如果在关闭一个FileInputStream的时候抛出了异常,由于异常会被抑制,所以资源没有关闭,会不会产生资源泄漏?

【问题讨论】:

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


【解决方案1】:

所以如果在关闭FileInputStream时产生expression异常,由于expression异常会被抑制,资源不会被关闭...

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

...会不会造成资源泄露?

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

JB Nizet makes a very important point:只有如果try 块内(或在附加的finally 块内)引发了其他异常,该异常才会被抑制。如果try(或finally)期间没有异常,则关闭资源的异常不会被抑制。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-06
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多