gpt4 book ai didi

java - 如何在不误报的情况下激活 eclipse java 警告 "unnecessary declaration of thrown exception"?

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:25 25 4
gpt4 key购买 nike

我讨厌声明抛出异常的函数,而这些异常在任何情况下都不会被该函数抛出。如果在函数体中删除了 throw 语句而不将其从 throws 定义中删除,那么在重构中就会发生这种情况。

这就是为什么我激活设置 Java -> 编译器 -> 错误/警告 -> 不必要的代码 -> 抛出异常的不必要声明。

enter image description here

如果在接口(interface)或 super 方法中定义异常,这会导致误报警告。如果接口(interface)的实现 A 不抛出一种异常类型,但实现 B 抛出,eclipse 会警告实现 A 中不必要的声明。这同样适用于 super 方法和重写方法。这就是为什么我激活子选项“忽略覆盖和实现方法”的原因。

到这里为止都很好。但我有相反的情况。重写的方法抛出一个异常类型,该异常类型未在 super 方法中使用。看这个最小的例子:

class Vehicle {
protected int getStatus() throws GeneralException, StatusException {
throw new GeneralException("One exception type in super type only");
}
}

class Car extends Vehicle {
@Override
protected int getStatus() throws GeneralException, StatusException {
throw new StatusException("Special case, that gets special handling");
}
}

现在 Vehicle 中的 StatusException 在 eclipse 中被警告。

enter image description here

当然有人会说这是糟糕的设计等等,但从实用的角度来看,这种情况会再次发生,而且很可能人们会接受不改变架构,而只是简单地将新的异常类型添加到 super类型。 但是在这种情况下如何摆脱误报警告呢?当然可以使用带有 javadoc 的子选项,但这也会忽略大多数真正的正面命中。另一种选择是添加 SuppressWarning 注释“未使用”,但其他用户可能会收到不需要的警告。

最佳答案

就我个人而言,我会在警告设置下激活第二个选项:“忽略记录的异常...”并且只记录那些:

/**
* @throws GeneralException when general stuff goes wrong
* @throws StatusException when status stuff goes wrong
*/
protected int getStatus() throws GeneralException, StatusException {
throw new GeneralException("One exception type in super type only");
}

也许包含一个稍微更有用的解释,但基本上可以归结为这一点。

关于java - 如何在不误报的情况下激活 eclipse java 警告 "unnecessary declaration of thrown exception"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19220203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com