SonarQube показывает ошибку при наличии исключения

для приведенного ниже кода Sonarqube показывает ошибку, говоря: «Либо зарегистрируйте, либо повторно создайте это исключение». для блока catch, как мы можем справиться с тем же

  private ResponseEntity<String> getResponse(String url,
                                                      String logName,
                                                      HttpMethod httpMethod,
                                                      HttpEntity<String> httpEntity,
                                                      HttpServletRequest httpServletRequest)
    {
        httpServletRequest.setAttribute("api", logName);
        ResponseEntity<String> checkEntity;
        try {
            if(logName.equals("Activate All Offer Api")){
                checkEntity = requestFactory.getRestTemplate().exchange(url, httpMethod, httpEntity, String.class);
            }else {
                checkEntity = restTemplate.exchange(url, httpMethod, httpEntity, String.class);
            }
        } catch (Exception e) {
        throw new LocalHttpClientErrorException(e.getLocalizedMessage());
    }
        return checkEntity;
    }

person Mohit H    schedule 10.06.2019    source источник
comment
Он говорит вам, что нужно повторно выдать исключение правильно, и это не означает, что вырезать трассировку стека исходного исключения и просто использовать локализованное сообщение об исключении.   -  person Tom    schedule 10.06.2019


Ответы (1)


Чтобы предупреждение исчезло, вам нужно прикрепить исходное исключение в качестве причины к LocalHttpClientErrorException либо в параметре конструктора, либо, если это невозможно, с помощью метода initCause(Throwable). Но есть и несколько других проблем.

  1. Вы ловите общее исключение. Это всегда признак серьезного запаха кода.
  2. Вы передаете локализованное сообщение в LocalHttpClientErrorException. За локализацию должен отвечать уровень пользовательского интерфейса, а не бизнес-логика.
person Torben    schedule 10.06.2019
comment
Я бы всегда смягчал знак обычно, часто и т. Д. Иногда вам нужно поймать исключение, например. вы вызываете метод вызова Callable в попытке. - person Andy Turner; 10.06.2019
comment
Да, я думаю, это справедливо. - person Torben; 10.06.2019