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”通常是不正确的做法。应该对数据执行预防性检查。