Java 声纳说我在一个界面上有一个多余的投掷

Java 声纳说我在一个界面上有一个多余的投掷,java,interface,sonarqube,Java,Interface,Sonarqube,我在一个接口中定义了一个函数,它抛出我自己的异常。当我运行声纳时,它说这是一个多余的投掷。我怎样才能解决这个小问题 这是函数的定义: OwnBean getOwnBean(Integer code1, String code2) throws OwnBeanException; 谢谢你的帮助 更多信息: 我设法得到了更多关于这方面的信息 该异常是另一个异常的后代,该异常最后是异常的后代 我得到的消息是“无法获得OwnBeanException类的信息”。我想说,最可能的解释是,OwnBeanE

我在一个接口中定义了一个函数,它抛出我自己的异常。当我运行声纳时,它说这是一个多余的投掷。我怎样才能解决这个小问题

这是函数的定义:

OwnBean getOwnBean(Integer code1, String code2) throws OwnBeanException;
谢谢你的帮助

更多信息:

我设法得到了更多关于这方面的信息

该异常是另一个异常的后代,该异常最后是
异常的后代


我得到的消息是“无法获得OwnBeanException类的信息”。

我想说,最可能的解释是,OwnBeanException扩展了RuntimeException,这可以解释为什么它是多余的。运行时异常(包括扩展它的所有类)是按定义取消选中的,通过抛出声明它们没有意义

所有可能性,根据:

在以下情况下,Java中抛出声明中的异常是多余的:

  • 它被多次列出
  • 它是另一个列出的异常的子类
  • 它是一个RuntimeException,或其后代之一

从技术上讲,任何扩展RuntimeException的异常都不必在throws声明子句中声明。因此,可以认为它的声明是多余的

但是:

在Spring框架中,您将看到许多方法使用抛出异常声明来扩展RuntimeException

  • Spring避免检查异常
  • 对于使用它的程序员来说,更容易看到可以抛出哪些未检查的异常
示例:org.springframework.web.client.RestTemplate类方法:

@Override
public void delete(URI url) throws RestClientException {
    execute(url, HttpMethod.DELETE, null, null);
}
其中:

public class RestClientException extends NestedRuntimeException {
    // ...
} 

就我个人而言,我主张声明未经检查的异常,因为这对程序员来说更容易。

这不仅更容易,而且可以避免生产中的严重错误。。。我偶然发现这一点是因为Sonar Cube代码气味
“抛出”声明不应该是多余的