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

标签 java eclipse

我刚刚开始使用新的 Eclipse 4.2 (Juno) Null Analysis。

像这样的代码:

x = foo();
if (x == null)
    fail("x is null");
return x.bar();

我收到 x 可能为空的警告。但它不可能,因为 fail 总是抛出,因此永远不会返回。 (通过更好的过程间分析,它可能会自动确定这一点,但目前似乎没有。)

显然,有一些方法可以重写代码来绕过警告,但我想要的是一种指示(例如注释)失败永不返回的方法。

我还尝试使用@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,但这足以让编译器确信该行将始终抛出。

关于java - 有没有办法将 Java 方法标记(例如注释)为永不返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11249602/

相关文章:

java - 此方法必须返回 int 类型的结果 -

java - 如何在build.gradle中指定 "pig-0.13.0-h2.jar"依赖?

eclipse - 无法为tomcat预留内存

java - 错误检查对象为空

java - 从 Apache Velocity 模板访问常量值?

java - 有没有办法从类路径外部导入规则文件?

java - 我怎样才能在 Eclipse 中找到一个仅给出其合成名称 (Class$N) 的匿名内部类?

java - 从电子邮件下载附件后,日期格式从 dd/MM/yyyy 更改为 dd_MM_yyyy

java - 使用 Gradle 激活 Lombok 注释处理器

java - 如何将值传递给构造函数并从同一类中的方法使用它?