繁体   English   中英

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

[英]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 ,但它足以让编译器确保该行总是抛出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM