Sonar说我有一个多余的接口



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

这是函数的定义:

OwnBean getOwnBean(Integer code1, String code2) throws OwnBeanException;

谢谢你的帮助!

更多信息:

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

该异常是另一个异常的后代,该异常在末尾是Exception的后代。

我得到的消息是"无法获取OwnBeaException类的信息"

我想说,最可能的解释是OwnBeanException扩展了RuntimeException,这将解释为什么它是多余的。RuntimeException(包括所有扩展它的类)根据定义是未检查的,通过throws声明它们是没有意义的。

所有可能性,根据文件:

Java中throws声明中的异常是多余的,如果:

  • 它被多次列出
  • 它是另一个列出的异常的子类
  • 它是一个RuntimeException,或它的一个子项

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

但是:

在Spring Framework中,您将看到许多方法具有用于扩展RuntimeException的异常的throws声明。

  • 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 {
    // ...
} 

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

最新更新