作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我刚刚开始使用新的 Eclipse 4.2 (Juno) Null Analysis。
像这样的代码:
x = foo();
if (x == null)
fail("x is null");
return x.bar();
我收到 x 可能为空的警告。但它不可能,因为 fail 总是抛出,因此永远不会返回。 (通过更好的过程间分析,它可能会自动确定这一点,但目前似乎没有。)
显然,有一些方法可以重写代码来绕过警告,但我想要的是一种指示(例如注释)失败永不返回的方法。
我还尝试使用@SuppressWarnings("null") 来抑制警告,但这没有用。
消除警告的一种方法是添加:assert x != null;
(假设您已打开设置以在 null 分析中包含断言)
在 GCC C++ 中我可以这样做:void fn __attribute__ ((noreturn))
最佳答案
一种半传统的方法如下:
public RuntimeException fail(String message) {
throw new RuntimeException(message);
}
所以你可以写throw fail("x is null")
。当然,fail
将始终以抛出结束,而不是 throw
,但这足以让编译器确信该行将始终抛出。
关于java - 有没有办法将 Java 方法标记(例如注释)为永不返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249602/
我是一名优秀的程序员,十分优秀!