尝试使用资源:关闭 TWR 块中的资源时发生资源泄漏
Try with Resources: Resource leak while closing resources in TWR block
我读到我们不需要明确关闭资源,它将由 java 自己关闭,假设我已经编写了代码。
try(FileInputStream fis = new FileInputStream("");){
// code to to somethings
}
FileInputStream 将自动关闭,如果在关闭时产生错误,它将抑制该表达式。
那么如果在关闭FileInputStream的时候抛出异常,由于异常会被抑制,资源没有关闭,会不会产生资源泄露?
So if while closing an FileInputStream
an expression exception is generated, since the expression exception will be suppressed , the resource is not closed...
您不知道它没有关闭,只是您在关闭它时遇到异常。
... Will it generate a resource leak ?
它可能会或可能不会造成泄漏,但您对此无能为力。如果您尝试关闭该资源,那么您就完成了您的工作。
但是 :只有在 如果 在 try
块(或 finally
块附加到它)。如果在 try
(或 finally
)期间没有异常,关闭资源 的异常将不会 被抑制。
我读到我们不需要明确关闭资源,它将由 java 自己关闭,假设我已经编写了代码。
try(FileInputStream fis = new FileInputStream("");){
// code to to somethings
}
FileInputStream 将自动关闭,如果在关闭时产生错误,它将抑制该表达式。
那么如果在关闭FileInputStream的时候抛出异常,由于异常会被抑制,资源没有关闭,会不会产生资源泄露?
So if while closing an
FileInputStream
anexpressionexception is generated, since theexpressionexception will be suppressed , the resource is not closed...
您不知道它没有关闭,只是您在关闭它时遇到异常。
... Will it generate a resource leak ?
它可能会或可能不会造成泄漏,但您对此无能为力。如果您尝试关闭该资源,那么您就完成了您的工作。
但是 try
块(或 finally
块附加到它)。如果在 try
(或 finally
)期间没有异常,关闭资源 的异常将不会 被抑制。