Java 声纳问题的最佳解决方案;抛出;
我使用SonarQube来提高编码质量,但我这里有一个bug,我不知道最好的解决方案 我使用以下签名调用Spring的方法:Java 声纳问题的最佳解决方案;抛出;,java,sonarqube,Java,Sonarqube,我使用SonarQube来提高编码质量,但我这里有一个bug,我不知道最好的解决方案 我使用以下签名调用Spring的方法: T read() throws Exception, UnexpectedInputException, ParseException, NonTransientResourceException; 由于我只需调用此方法,并且无意处理任何错误,因此我将我的方法定义为: ItemTransacaoEnvioVO read() throws UnexpectedInpu
T read() throws Exception, UnexpectedInputException, ParseException,
NonTransientResourceException;
由于我只需调用此方法,并且无意处理任何错误,因此我将我的方法定义为:
ItemTransacaoEnvioVO read() throws
UnexpectedInputException, ParseException, NonTransientResourceException,
Exception
但我有一个声纳错误:
Remove the declaration of thrown exception
'org.springframework.batch.item.ParseException' which is a subclass of
'java.lang.Exception'
...
etc
然后我像声纳想要的那样改变了:
ItemTransacaoEnvioVO read() throws Exception
我明白了:
Define and throw a dedicated exception instead of using a generic one.
从最佳实践和编码质量的角度考虑,解决此问题的最佳方案是什么
Java8,Sonar不要抛出泛型异常。你应该将异常子类化,然后抛出你的子类,这样异常的类型实际上提供了关于发生了什么的信息,允许函数的客户端捕获并适当地处理它。如果你计划处理
异常
,异常
,解析异常
,非TransientResourceException
,
或者,如果您想让自定义类的用户处理这些异常,
然后问题是可以接受的,您可以将其标记为假阳性,或者不会在您的声纳中修复
但您或自定义类的用户不太可能对单独处理所有这些低级异常感兴趣。
如果是这样的话,
然后定义自定义异常就有意义了,
把它扔了。
捕获Spring的所有异常,并将其保存在自定义异常中,以防有人想查看原始原因。请将您的问题包括SonarJava的版本(在更新中心:Administration>System>Update Center中找到)。唯一的一点是Spring正在抛出这些异常。通用的一个来自Spring,这里唯一的一点是Spring抛出了太多的异常。不是我。