【发布时间】:2012-06-28 17:07:23
【问题描述】:
我刚开始使用新的 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))
【问题讨论】:
-
我不知道这种情况。你有这个需求,还是更多的学术探究?
-
这并不重要,因为我可以轻松解决它,但它来自实际的生产代码。