Javac/Eclipse - 如果方法没有抛出它可能抛出的最具体的异常,则会发出警告

标签 java eclipse warnings javac

我有一个这样的类(class):

public class FooBar
{

    public String foo() throws Exception {
        return "";
    }

    public String bar() throws Exception {
        throw new BazException();
    }

}

在 Eclipse 中,我收到关于方法 foo 的警告,指出:

The declared exception Exception is not actually thrown by the method foo() from type FooBar

见下文:

enter image description here

问题:是否可以为方法 bar 配置 silmiar 警告?方法 bar 不会抛出它可能抛出的最具体的异常。

我正在使用:

  • Eclipse 氧气释放 (4.7.0)
  • Java 8

最佳答案

您的帖子提出了两个不同的问题。第一期:

Is it possible to configure a similar warning for method bar?

是的,但不需要配置。如果一个方法声明它抛出某种 Exception 子类型,但实际上没有抛出,那么 Eclipse 中将显示与您报告的警告类似的警告。就该警告而言,Exception 类型的异常没有什么特别之处。

在您的代码中,只需更改方法 foo() 来抛出 BazException 而不是 异常看到:

Exception warning message

第二期:

Method bar doesn't throw the most specific exception that it could.

确实如此,但这是一个与获取有关根本未抛出异常的消息不同的问题。无法将 Eclipse 配置为抛出类似“方法 {m} 不会抛出它可能抛出的最具体异常”的消息,因为 Eclipse 的编译器错误列表中没有类似的消息/警告。

此外,在引发多个异常的复杂方法中,此类消息的措辞可能会变得棘手且复杂。也许是代码分析工具,例如 PMD可以为您识别违规方法。

关于Javac/Eclipse - 如果方法没有抛出它可能抛出的最具体的异常,则会发出警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46819503/

相关文章:

java - 我在 listView 中有一个倒计时器,但工作不正常

java - 模块化Java应用程序

java - 在从 java.util.date 转换为 java.sql.date 之前检查空日期

java - 使用 Tomcat (Eclipse) 调试 GWT 应用程序

android - 不针对最新版本的 Android

node.js - 如何在 Node.js UnhandledPromiseRejectionWarning 中找到未处理的 promise ?

java - 测试 Java 是否支持 -XX 选项

java - 获取 API Java 声音中的信号电平

java - 如何在java中将字节CP-1252转换为字节UTF-8

java - Java 错误和警告列表