如何解决'定义并抛出专用异常而不是使用通用异常'。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决'定义并抛出专用异常而不是使用通用异常'。相关的知识,希望对你有一定的参考价值。
当两个列表的长度不相等时,我需要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
问题。
答案
如果这两个列表是传递给方法的参数,那么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));
}
另一答案
Don't throw generic exceptions。您应该继承Exception,然后抛出您的子类,以便异常的类型实际上提供有关正在发生的事情的信息,允许该函数的客户端捕获并适当地处理它。
以上是关于如何解决'定义并抛出专用异常而不是使用通用异常'。的主要内容,如果未能解决你的问题,请参考以下文章
如何限制对任何路由的直接访问并抛出 404 异常,即使存在路由?