fla*_*kes 41 java try-catch autocloseable
try-with功能如何适用于AutoCloseable
已声明的变量null
?
我假设这会在尝试调用close
变量时导致空指针异常,但它运行没有问题:
try (BufferedReader br = null){
System.out.println("Test");
}
catch (IOException e){
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
And*_*mas 57
Java语言规范指定仅在非空时关闭它,在14.20.3节中.尝试资源:
仅当资源初始化为非空值时才关闭资源.
当资源有时可能存在并且缺少其他资源时,这实际上可能是有用的.
例如,假设您可能或可能没有某个远程日志记录系统的可关闭代理.
try ( IRemoteLogger remoteLogger = getRemoteLoggerMaybe() ) {
if ( null != remoteLogger ) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
如果引用为非null,则远程记录器代理将关闭,正如我们所期望的那样.但是如果引用为null,则不会尝试对其调用close(),不会抛出NullPointerException,代码仍然有效.
归档时间: |
|
查看次数: |
8715 次 |
最近记录: |