gpt4 book ai didi

java - 如何在不违反 SonarQube 的情况下抛出已检查的异常?

转载 作者:行者123 更新时间:2023-12-01 17:44:12 25 4
gpt4 key购买 nike

SonarQube 规则规定“...no method throws a new checked exception.

它给出了以下代码示例:

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 的详细消息字符串。

然后有一个条件检查字符串的内容以抛出更具体的自定义检查异常(扩展异常)。

如何在不违反 SonarQubes 规则的情况下实现这一目标,即我不会抛出 new CheckedException(message);

这条规则是否意味着 SonarQube 永远不希望开发人员抛出新的自定义检查异常?

最佳答案

这是来自规则

The purpose of checked exceptions is to ensure that errors will be dealt with, either by propagating them or by handling them, but some believe that checked exceptions negatively impact the readability of source code, by spreading this error handling/propagation logic everywhere.

This rule verifies that no method throws a new checked exception.

这不是绝对规则。如果您想防止人们在您的代码中抛出已检查的异常,这完全取决于您。
请记住, Sonar 规则只是规则,如果您不同意某些规则,只需禁用它们即可。尤其是这个看起来非常基于意见。

如果您无法禁用它,请将问题解决为无法修复,并添加注释来解释您需要抛出此异常,因为架构需要如此。

我个人认为检查异常有点烦人,但我不会启用此规则,我认为它不相关。

关于java - 如何在不违反 SonarQube 的情况下抛出已检查的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57498939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com