[英]Is there a way to mark (e.g. annotate) a Java method as never returning?
我刚开始使用新的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))
一种半传统的方法如下:
public RuntimeException fail(String message) {
throw new RuntimeException(message);
}
所以你可以写throw fail("x is null")
。 当然, fail
将总是最终做投掷,而不是throw
,但它足以让编译器确保该行总是抛出。
你试过org.eclipse.jdt.annotation.Nullable
注释吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.