Pra*_*mha 3 java try-with-resources
尝试使用资源总是关闭资源而不管错误情况如何?我的意思是考虑以下代码:
try (BufferedReader br =
new BufferedReader(new FileReader(path))) {
return br.readLine();
}
Run Code Online (Sandbox Code Playgroud)
会br永远关闭吗?我读过Oracle文档说:
无论try语句是正常还是突然完成,它都将被关闭
因此,无论程序是正常运行还是抛出异常,它都会起作用.但是条件如崩溃System.exit还是JVM崩溃呢?我知道这些条件不适用于finally阻止.那么尝试资源失败的条件是什么?
这只是我要求好奇心,有人可以对此有所了解吗?
try-with-resource只是一种语法糖,可以帮你省去乱搞finally条款的麻烦.在try块内发生的任何"java-ish" 都不会阻止资源关闭 - 返回,抛出异常等.
任何突然终止JVM的东西(例如调用System#exit,杀死JVM的进程,拔掉计算机等等)都不会被处理,就像它没有被老式finally条款处理一样.