繁体   English   中英

尝试资源总是会关闭资源

[英]Will try-with-resources always close the resources

尝试使用资源总是关闭资源而不管错误情况如何? 我的意思是考虑以下代码:

try (BufferedReader br =
               new BufferedReader(new FileReader(path))) {
    return br.readLine();
}

br一直关闭吗? 我读过Oracle文档说:

无论try语句是正常还是突然完成,它都将被关闭

因此,无论程序是正常运行还是抛出异常,它都会起作用。 但是System.exitJVM等条件崩溃了怎么办? 我知道这些条件不适用于finally块。 那么尝试资源失败的条件是什么?

这只是我要求好奇心,有人可以对此有所了解吗?

try-with-resource只是一种语法糖,可以帮你省去乱搞finally子句的麻烦。 try块中发生的“java-ish”都不会阻止资源关闭 - 返回,抛出异常等。

任何突然终止JVM的东西(例如调用System#exit ,杀死JVM的进程,拔掉计算机等等)都不会被处理,就像它没有被老式的finally子句处理一样。

如果VM以任何方式终止,则无论如何都将释放任何内存和文件通道。 如果您在相应的关闭操作中有自定义代码并且VM崩溃,我希望此代码不会运行但几乎不会发生。 大多数错误都由VM处理,在任何情况下都会调用close方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM