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

Kru*_*tel 10 java exception sonarqube

我需要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));
            }
Run Code Online (Sandbox Code Playgroud)

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

Era*_*ran 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));
}
Run Code Online (Sandbox Code Playgroud)


Tim*_*sko 6

不要抛出通用异常。您应该对Exception进行子类化,然后抛出您的子类,以便异常的类型实际上提供有关所发生情况的信息,从而使函数的客户端可以适当地捕获和对待它。