![](/img/trans.png)
[英]SonarQube error: Refactor this method to throw at most one checked exception
[英]How can you throw a checked exception without violating SonarQube?
有一个SonarQube规则,该规则指出“ ...没有方法抛出新的已检查异常。 ”
并给出以下代码示例:
public void myMethod1() throws CheckedException {
...
throw new CheckedException(message); // Noncompliant
...
throw new IllegalArgumentException(message); // Compliant; IllegalArgumentException is unchecked
}
public void myMethod2() throws CheckedException { // Compliant; propagation allowed
myMethod1();
}
那么如何才能实际引发自定义检查异常?
假设我捕获了IOException并执行getMessage()以获取IOException的详细消息字符串。
然后让条件检查字符串的内容以引发更特定的自定义检查异常(扩展Exception)。
在不违反SonarQubes规则(我不throw new CheckedException(message);
情况下,我如何实际完成此操作throw new CheckedException(message);
?
这条规则是否意味着SonarQube从不希望开发人员抛出新的自定义检查异常?
这是从规则
检查异常的目的是确保通过传播错误或通过处理错误来处理错误, 但有些人认为 ,通过将错误处理/传播逻辑传播到各处,检查异常会对源代码的可读性产生负面影响。
该规则验证没有方法抛出新的检查异常。
这不是绝对的规则。 如果要防止人们在代码中引发检查异常,这取决于您。
请记住,声纳规则只是规则,如果您不同意某些规则,只需禁用它们即可。 尤其是这个看起来很基于意见。
如果你无法禁用它,作为解决该问题won't fix
,并添加评论,说明你需要抛出此异常,因为结构需要如此。
我个人认为检查异常有点烦人,但我不会启用此规则,我认为它不相关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.