[英]Possible null pointer exception on autocloseable idiom
考虑以下try-with-resources块:
try (Foo foo = getAFoo()) {
}
对于实现java.lang.AutoCloseable
一些类Foo
。
如果getAFoo()
返回null
,那么是否会在结束括号上抛出空指针异常(由于运行时试图调用close
)?
根据这个Oracle博客 :
经过充分考虑后,JSR 334专家组已决定对null资源上的try-with-resources语句的语义应更改如下:编译器生成的关闭资源的调用仅在资源为非null时才会发生。
这意味着,你可以关闭任何null
的资源try
(使用资源)块而不发出一个错误(和相同的程序时会自动尝试当关闭资源try
结束)。
您实现java.lang.AutoCloseable
,因此编译器将在完成时尝试关闭资源,但只有在资源non-null
才会发生关闭资源的进程。 所以在这种情况下,我认为不会抛出异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.