我刚开始使用新的Eclipse 4.2(Juno)Null Analysis.
在这样的代码:
x = foo();
if (x == null)
fail("x is null");
return x.bar();
Run Code Online (Sandbox Code Playgroud)
我收到的警告是x可能为空.但它不可能,因为失败总是抛出,因此永远不会回来.(通过更好的程序间分析,它可能会自动确定,但目前似乎没有.)
显然,有一些方法可以重写代码以绕过警告,但我想要的是一种表示失败的方法(例如注释)永远不会返回.
我也尝试使用@SuppressWarnings("null")来抑制警告,但这不起作用.
摆脱警告的一种方法是添加:( assert x != null;假设您已打开设置以在null分析中包含断言)
在GCC C++中我可以做到: void fn __attribute__ ((noreturn))
Lou*_*man 12
一种半传统的方法如下:
public RuntimeException fail(String message) {
throw new RuntimeException(message);
}
Run Code Online (Sandbox Code Playgroud)
所以你可以写throw fail("x is null").当然,fail总会最终完成投掷,而不是throw,但这足以让编译器放心,该线总是抛出.
| 归档时间: |
|
| 查看次数: |
1042 次 |
| 最近记录: |