我刚开始使用新的 Eclipse 4.2 (Juno) Null Analysis。
在这样的代码上:
x = foo();
if (x == null)
fail("x is null");
return x.bar();
我收到 x 可能为空的警告。但它不可能,因为失败总是抛出,因此永远不会返回。(通过更好的程序间分析,它大概可以自动确定这一点,但目前似乎没有。)
显然,有一些方法可以重写代码来绕过警告,但我想要的是一种指示失败永远不会返回的方法(例如注释)。
我还尝试使用 @SuppressWarnings("null") 抑制警告,但这没有用。
消除警告的一种方法是添加:(assert x != null;
假设您已打开设置以在 null 分析中包含断言)
在 GCC C++ 中,我可以这样做:void fn __attribute__ ((noreturn))