有没有办法将Java方法标记(例如注释)为永不返回?

时间:2012-06-28 17:07:23

标签: java eclipse

我刚开始使用新的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))

2 个答案:

答案 0 :(得分:11)

这样做的一种半传统方式如下:

public RuntimeException fail(String message) {
  throw new RuntimeException(message);
}

所以你可以写throw fail("x is null")。当然,fail总是最终会进行投掷,而不是throw,但它足以让编译器放心该线总是会抛出。

答案 1 :(得分:0)