繁体   English   中英

autocloseable习语上可能的空指针异常

[英]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.

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