Sonar说我在界面上有一个多余的投掷

时间:2015-03-27 13:13:25

标签: java interface sonarqube

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

这是函数的定义:

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

感谢您的帮助!

更多信息:

我设法获得了有关此内容的更多信息。

异常是其他异常的后代,最后是Exception的后代。

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

2 个答案:

答案 0 :(得分:3)

我想说,最可能的解释是你的OwnBeanException扩展了RuntimeException,这可以解释为什么它是多余的。 RuntimeExceptions(包括扩展它的所有类)都是未选中的定义,通过throws声明它们没有意义。

所有可能性,根据documentation

  

如果出现以下情况,Java中throws声明中的异常是多余的:

     
      
  • 多次列出
  •   
  • 它是另一个列出的例外的子类
  •   
  • 它是RuntimeException或其后代之一
  •   

答案 1 :(得分:0)

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

但是:

在Spring框架中,您将看到许多带有throws-declaration的方法,用于扩展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 {
    // ...
} 

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