如何解决'定义并抛出专用异常而不是使用通用异常'。

问题描述 投票:9回答:2

当两个列表的长度不相等时,我需要throw RuntimeException。我们使用SonarQube工具进行代码审查。

这是代码:

if (objctArray.length != columnArray.length) {
                throw new RuntimeException(String.format("objctArray and columnArray length is not same. objctArray length = %d, columnArray length = %d", objctArray.length, columnArray.length));
            }

现在,SonarQube提出Define and throw a dedicated exception instead of using a generic one.throw new RuntimeException线的问题。我不知道我可以替换哪个例外来解决SonarQube问题。

java exception sonarqube
2个回答
11
投票

如果这两个列表是传递给方法的参数,那么IllegalArgumentException将是一个很好的候选者。它是RuntimeException的一个子类,所以你仍然会抛出一种RuntimeException

if (objctArray.length != columnArray.length) {
    throw new IllegalArgumentException(String.format("objctArray and columnArray length is not same. objctArray length = %d, columnArray length = %d", objctArray.length, columnArray.length));
}

6
投票

Don't throw generic exceptions。您应该继承Exception,然后抛出您的子类,以便异常的类型实际上提供有关正在发生的事情的信息,允许该函数的客户端捕获并适当地处理它。

© www.soinside.com 2019 - 2024. All rights reserved.