JD.CATCH
Klocwork 在发现捕获模块含有不需要的异常参数(如 java.lang.NullPointerException)时,报告 JD.CATCH 问题。参数部分提供了可能的异常参数列表。
漏洞与风险
正如其名,异常参数应仅用于异常情况;不能用于普通控制流。将异常参数用于控制流会大大降低性能、可维护性和代码可读性。
缓解与预防
将代码更改为可执行预防性检查(全空、数组索引等)的代码。
示例 1
复制
String test1(String my) {
try {
return my.substring(1,4);
} catch (NullPointerException e) {
return "";
}
}
在第 12 行报告 JD.CATCH:显式捕获“java.lang.NullPointerException”通常是不正确的做法。应该对数据执行预防性检查。