SONAR 扩展异常或 RuntimeException?
SONAR extend Exception or RuntimeException?
我有一个自定义异常 class 写成
public class MyCustomException extends RuntimeException {
public MyCustomException(Throwable cause) {
super(cause);
}
enter code here
/**
* @param message
* @param cause
*/
public MyCustomException(String message, Throwable cause) {
super(message, cause);
}
}
在我的 serviceImpl 层
@Override
public List<SiteDetails> getSite() throws MyCustomException {
}
SONAR(Ecplise IDE linting 插件)状态:
Remove the declaration of thrown exception '.MyCustomException' which
is a runtime exception
我应该删除声明还是应该在 MyCustomException
class 中扩展 Exception
而不是 RunTimeException
?
声纳问题主要基于意见。
RuntimeException
没有被强制处理和声明,但在记录这种情况的方法中声明它并不是一个坏习惯。
Should I remove the declaration or should I extend Exception in
MyCustomException class instead of RuntimeException
如果您认为 MyCustomException
是必须由客户端处理的异常,则 MyCustomException
应该派生自 Exception
而不是 RuntimeException
。
否则,如果在大多数情况下客户端无法处理异常,则应删除声明以使 Sonar Happy 或将此问题标记(至少尝试)为误报,如果您认为这样做是有意义的传达异常,即使它是 RuntimeException
.
我有同样的情况,你必须捕获运行时异常,在我的例子中是一个数组越界异常,因为我正在解析一个与特殊字符值分开的字符串,但有时字符串值不对应正确的约定,对吧?所以我必须处理它,但 Sonar 以同样的原因指责我! ArrayIndexOutOfBoundsException 派生自运行时异常
, 无论如何,一旦你知道你的代码块可以检索一些运行时异常,而不是直接抛出它,使用一个 catch 块并在其中抛出你的自定义异常。
catch (ArrayIndexOutOfBoundsException e) {
throw new YourCustomException("your message",e);
}
通过这种方式,您可以删除方法上的 throws 签名,Sonar 会很高兴
我有一个自定义异常 class 写成
public class MyCustomException extends RuntimeException {
public MyCustomException(Throwable cause) {
super(cause);
}
enter code here
/**
* @param message
* @param cause
*/
public MyCustomException(String message, Throwable cause) {
super(message, cause);
}
}
在我的 serviceImpl 层
@Override
public List<SiteDetails> getSite() throws MyCustomException {
}
SONAR(Ecplise IDE linting 插件)状态:
Remove the declaration of thrown exception '.MyCustomException' which is a runtime exception
我应该删除声明还是应该在 MyCustomException
class 中扩展 Exception
而不是 RunTimeException
?
声纳问题主要基于意见。
RuntimeException
没有被强制处理和声明,但在记录这种情况的方法中声明它并不是一个坏习惯。
Should I remove the declaration or should I extend Exception in MyCustomException class instead of RuntimeException
如果您认为 MyCustomException
是必须由客户端处理的异常,则 MyCustomException
应该派生自 Exception
而不是 RuntimeException
。
否则,如果在大多数情况下客户端无法处理异常,则应删除声明以使 Sonar Happy 或将此问题标记(至少尝试)为误报,如果您认为这样做是有意义的传达异常,即使它是 RuntimeException
.
我有同样的情况,你必须捕获运行时异常,在我的例子中是一个数组越界异常,因为我正在解析一个与特殊字符值分开的字符串,但有时字符串值不对应正确的约定,对吧?所以我必须处理它,但 Sonar 以同样的原因指责我! ArrayIndexOutOfBoundsException 派生自运行时异常 , 无论如何,一旦你知道你的代码块可以检索一些运行时异常,而不是直接抛出它,使用一个 catch 块并在其中抛出你的自定义异常。
catch (ArrayIndexOutOfBoundsException e) {
throw new YourCustomException("your message",e);
}
通过这种方式,您可以删除方法上的 throws 签名,Sonar 会很高兴