尝试使用with资源语句,无论错误条件如何,都会关闭资源吗?我的意思是考虑以下代码:
标签会被始终闭合吗?我已经阅读了Oracle的文档,文档中说:“无论try语句是正常完成还是异常中止,它都会被关闭。”因此,无论程序是正常运行还是抛出异常,
标签都可以正常工作。但如果出现
这只是我的好奇心,是否有人可以详细解释一下?
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
标签会被始终闭合吗?我已经阅读了Oracle的文档,文档中说:“无论try语句是正常完成还是异常中止,它都会被关闭。”因此,无论程序是正常运行还是抛出异常,
标签都可以正常工作。但如果出现
System.exit
或 JVM
崩溃等情况呢?我知道这些条件不适用于finally
块。所以,有没有一种情况会导致try-with-resources失败呢?这只是我的好奇心,是否有人可以详细解释一下?
close
方法中设置一个断点,在try
块中调用System.exit
并观察发生了什么。 - Kai