繁体   English   中英

如何在不违反SonarQube的前提下引发检查异常?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM