首页 > 解决方案 > JsonProcessingException 中的 catch 块中的 SonarQube 错误

问题描述

我有以下代码。我们正在使用声纳 8.9 版本和 jdk 11。SonarQube 总是抛出一个关键问题“定义并抛出一个专用异常而不是使用通用异常”

try {
    String stringPayload = jsonMapper.writeValueAsString(payload);
    log.info("Feedzai request: {}"<some object>);
    input.setPayload(new StringEntity(stringPayload, APPLICATION_JSON));
} catch (JsonProcessingException e) {
    throw new RuntimeException(e.getMessage());
}

我试图从以下位置替换 catch“RuntimeException”:

throw new RuntimeException(e.getMessage()); 

扔新的

RuntimeException(String.format("RuntimeException during processing JSON %s", e.getMessage()),e);

但得到同样的错误。你能请人帮我吗。

标签: javaexceptionsonarqubejava-11

解决方案


RuntimeExteption的定义:

RuntimeException 及其子类是未经检查的异常。如果未经检查的异常可以通过方法或构造函数的执行抛出并传播到方法或构造函数边界之外,则不需要在方法或构造函数的throws子句中声明它们。

你有两个选择:

  1. 创建自定义异常类
  2. 投掷已经被抓住JsonProcessingException

第一个选项的代码将是:

} catch (JsonProcessingException e) {
    //log message somewhere
    throw new MyCustomException(e.getMessage());
}

第二个选项的代码将是:

} catch (JsonProcessingException e) {
    //log message somewhere
    throw;
}

推荐阅读