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

Java 尝试使用资源:关闭TWR块中的资源时资源泄漏,java,java-7,try-with-resources,resource-leak,Java,Java 7,Try With Resources,Resource Leak,我读到我们不需要显式地关闭一个资源,它将由java本身关闭,假设我已经编写了一个代码 try(FileInputStream fis = new FileInputStream("");){ // code to to somethings } FileInputStream将自动关闭,如果关闭时生成错误,则会抑制该表达式 因此,如果在关闭FileInputStream时引发异常,因为异常将被抑制,资源未关闭,它会生成资源泄漏吗 因此,如果在关闭FileInputStream时生成表达式异

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

try(FileInputStream fis = new FileInputStream("");){
  // code to to somethings
}
FileInputStream将自动关闭,如果关闭时生成错误,则会抑制该表达式

因此,如果在关闭FileInputStream时引发异常,因为异常将被抑制,资源未关闭,它会生成资源泄漏吗

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

您不知道它没有关闭,只是在关闭它时出现了异常

。。。它会导致资源泄漏吗

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


但是:只有在
try
块内(或附加到它的
finally
块内)引发了其他异常时,才会抑制该异常。如果在
try
(或
finally
)期间没有异常,则关闭资源的异常不会被抑制。

请注意,只有从try块引发异常时,才会抑制异常。通过调用引发的异常,抑制的异常仍然可用。请参阅