我有一个这样的类(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
见下文:
问题:是否可以为方法 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 而不是 异常看到:
第二期:
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/