我读到我们不需要显式关闭资源,它将由java本身关闭,假设我已编写代码。
try(FileInputStream fis = new FileInputStream("");){
// code to to somethings
}
FileInputStream将自动关闭,如果在关闭时生成错误,它将禁止该表达式。
因此,如果在关闭FileInputStream时抛出异常,由于异常将被禁止,资源未关闭,是否会产生资源泄漏?
答案 0 :(得分:2)
因此,如果在关闭
FileInputStream
表达式异常时生成,则由于表达式异常将被禁止,因此资源未关闭... < / p>
你不知道它没有关闭,只是你在关闭时遇到异常。
......会产生资源泄漏吗?
它可能会或可能不会造成泄漏,但您无能为力。如果您试图关闭资源,那么您已经完成了自己的工作。
但是JB Nizet makes a very important point:只有在try
块(或附加到finally
块内)抛出一些其他异常时才会禁止 。如果在try
(或finally
)期间没有例外,则会停止关闭资源赢得的异常。