【发布时间】:2015-10-14 16:59:53
【问题描述】:
我创建了扩展Exception 类的自定义基础异常。稍后我将 MyBaseException 类扩展另一个 - 这次是特定的异常类。而且我现在对 SonarQube 之一有疑问 - 具体而言,“名为“Exception”的类应扩展“Exception”或子类”规则。类声明如下所示:
import org.apache.log4j.Logger;
import org.springframework.http.HttpStatus;
public class MyBaseException extends Exception {
public MyBaseException(int code, String message) {
super(message);
this.code = code;
LOGGER.error("Exception with HttpStatus code: " + code + " Msg: "
+ message);
}
public MyBaseException(HttpStatus code, String message) {
this(code.value(), message);
}
public int getCode() {
return code;
}
}
import org.springframework.http.HttpStatus;
public class SpecException extends MyBaseException {
public SpecException (HttpStatus code, String message) {
super(code, message);
}
public SpecException (int code, String message) {
super(code, message);
}
}
问题仅在于这个SpecException。 SonarQube 没有发现第一次继承有任何问题。 SonarQube 给出的提示是:“重命名此类以删除“异常”或更正其继承。”但我认为继承是正确的,因为我是通过 Exception 的子类继承的。
【问题讨论】:
-
MyBaseException 是否扩展了异常?听起来像是在抱怨。
-
是的,它扩展了异常。此类对声纳有效。问题出在 SpecException 上。
-
是的,如果没有展示问题的实际最小示例,就无法判断。
-
现在应该会更好。无论如何,这就是我对这个异常问题的全部了解。
-
您可以在 SonarQube 实例的更新中心查看 java 插件的版本。更重要的是你如何分析你的项目? maven 还是 sonar-runner ?如果是后者,您如何为分析提供字节码。如果 MyBaseException 的字节码(我想这个类没有与 SpecException 在同一个文件中定义)没有提供给分析器,那么类型层次结构没有正确解析,你会得到这个误报。
标签: java exception inheritance sonarqube