我读到我们不需要显式关闭资源,它将被java本身关闭,假设我是否编写了代码。
try(FileInputStream fis = new FileInputStream("");){
// code to to somethings
}
文件输入流将自动关闭,如果在关闭时生成错误,它将抑制该表达式。
因此,如果在关闭FileInputStream时抛出异常,因为异常将被抑制,因此资源没有关闭,它会生成资源泄漏吗?
因此,如果在关闭
FileInputStream
时生成表达式异常,因为表达式异常将被抑制,因此资源不会关闭...
您不知道它没有关闭,只是在关闭它时遇到了异常。
。会产生资源泄漏吗?
它可能会也可能不会造成泄漏,但您对此无能为力。如果您尝试关闭资源,则已完成工作。
但是 JB Nizet 提出了一个非常重要的观点:只有在 try
块(或附加到它的 finally
块中)抛出其他异常时,才会抑制异常。如果在try
(或finally
)期间没有异常,则不会禁止关闭资源的异常。