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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sonar说我在界面上有一个多余的投掷相关的知识,希望对你有一定的参考价值。

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

这是函数的定义:

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

谢谢你的帮助!

更多信息:

我已成功获得有关此内容的更多信息。

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

我收到的消息是“无法获取类OwnBean Exception的信息”。

答案

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

所有可能性,根据documentation

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

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

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

但:

在Spring-Framework中,您将看到许多方法,其中包含针对扩展RuntimeException的异常的throws-declarations。

  • 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说我在界面上有一个多余的投掷的主要内容,如果未能解决你的问题,请参考以下文章

Sonar6.0应用之二:Sonar Web界面配置及与RunnerScanner集成进行命令行代码分析

Sonar 中的包裹缠结指数数据表示啥?

利用Sonar定制自定义扫描规则

持续集成之代码质量管理———Sonar

持续集成之代码质量管理——Sonar

切换片段时导航重置