首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >资源将始终关闭资源。

资源将始终关闭资源。
EN

Stack Overflow用户
提问于 2016-05-31 06:43:25
回答 2查看 1.3K关注 0票数 3

资源尝试是否总是关闭资源,而不考虑错误条件?我的意思是考虑下面的代码:

代码语言:javascript
复制
try (BufferedReader br =
               new BufferedReader(new FileReader(path))) {
    return br.readLine();
}

br会永远关闭吗?我读过Oracle文档,其中说:

无论try语句是否正常或突然完成,它都将关闭。

因此,无论程序正常运行还是抛出异常,它都能工作。但是,像System.exitJVM崩溃这样的情况又如何?我知道这些条件不会适用于finally块。那么,是否存在资源尝试失败的条件呢?

这只是我的好奇,能不能有人把这件事弄清楚?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-31 06:48:51

使用资源尝试只是一种语法糖,可以避免使用finally子句的麻烦。在try块中发生的“java”不会阻止资源关闭-返回、抛出异常等等。

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

票数 8
EN

Stack Overflow用户

发布于 2016-05-31 06:48:15

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37538592

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档