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

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。