我在界面中定义了一个抛出我自己的异常的函数。当我运行Sonar时,它说这是一个多余的投掷。我该如何解决这个小问题?
这是函数的定义:
OwnBean getOwnBean(Integer code1, String code2) throws OwnBeanException;
感谢您的帮助!
更多信息:
我设法获得了有关此内容的更多信息。
异常是其他异常的后代,最后是Exception
的后代。
我得到的消息是"无法获取类OwnBeanException" 的信息。
答案 0 :(得分:3)
我想说,最可能的解释是你的OwnBeanException扩展了RuntimeException,这可以解释为什么它是多余的。 RuntimeExceptions(包括扩展它的所有类)都是未选中的定义,通过throws声明它们没有意义。
所有可能性,根据documentation:
如果出现以下情况,Java中throws声明中的异常是多余的:
- 多次列出
- 它是另一个列出的例外的子类
- 它是RuntimeException或其后代之一
答案 1 :(得分:0)
从技术上讲,扩展RuntimeException的任何异常都不必在 throws-declaration 子句中声明。因此,对其进行throw声明可以认为是多余的。
但是:
在Spring框架中,您将看到许多带有throws-declaration的方法,用于扩展RuntimeException的异常。
示例: org.springframework.web.client.RestTemplate类方法:
@Override
public void delete(URI url) throws RestClientException {
execute(url, HttpMethod.DELETE, null, null);
}
位置:
public class RestClientException extends NestedRuntimeException {
// ...
}
我个人主张提倡声明未经检查的异常,因为这对于程序员来说更容易。