首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AutoCloseable为null时使用资源重试

AutoCloseable为null时使用资源重试
EN

Stack Overflow用户
提问于 2016-02-13 05:04:45
回答 1查看 15.4K关注 0票数 67

对于已声明为nullAutoCloseable变量,try-with功能是如何工作的?

我假设这会导致空指针异常,当它试图在变量上调用close时,但它运行时没有问题:

代码语言:javascript
复制
try (BufferedReader br = null){
    System.out.println("Test");
}
catch (IOException e){
    e.printStackTrace();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-13 05:07:19

Java Language Specification在14.20.3. try-with-resources一节中指定只有在非null的情况下才关闭

仅当资源初始化为非空值时,才会关闭该资源。

当一个资源有时出现而其他资源不存在时,这实际上是很有用的。

例如,假设您可能有也可能没有某个远程日志记录系统的可关闭代理。

代码语言:javascript
复制
try ( IRemoteLogger remoteLogger = getRemoteLoggerMaybe() ) {
    if ( null != remoteLogger ) {
       ...
    }
}

如果引用为非空,则正如我们所预期的那样,远程记录器代理关闭。但是,如果引用为null,则不会尝试对其调用close(),也不会抛出NullPointerException,并且代码仍然有效。

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

https://stackoverflow.com/questions/35372148

复制
相关文章

相似问题

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