Предоставление обработчика Generic Exception в весенней загрузке, превращающего все исключения в HTTP 500 - PullRequest
0 голосов
/ 12 октября 2018

В моем приложении я предоставил обработчики для конкретных и Generic Exception (Exception.class) для обоих.Проблема заключается в том, что всякий раз, когда в API предоставляется неправильный ввод, он может выдать BAD REQUEST (HTTP-400).Тем не менее, он возвращает HTTP-500 в случае BAD-запросов.Валидационная пружинная загрузка автоматически запускается, однако она перехватывается handleApplicationException.

@ExceptionHandler(value = Exception.class)
public ResponseEntity<ErrorResponseDTO> handleApplicationException(final Exception ex) {
    LOGGER.error("Unhandled Exception occurred ", ex);

    ErrorResponseDTO errorResponseDTO = new ErrorResponseDTO();
    errorResponseDTO.setMessage("Internal Server Error");
    errorResponseDTO.setHttpStatus(HttpStatus.INTERNAL_SERVER_ERROR);

    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(errorResponseDTO);
}

@ExceptionHandler(value = ResourceNotFoundException.class)
public ResponseEntity<ErrorResponseDTO> handleResourceNotFoundException(final ResourceNotFoundException
    notFoundException) {

    LOGGER.error("Handling resource not found exception", notFoundException);
    ErrorResponseDTO errorResponseDTO = new ErrorResponseDTO();
    errorResponseDTO.setMessage(notFoundException.getMessage());
    errorResponseDTO.setHttpStatus(HttpStatus.NOT_FOUND);

    return ResponseEntity.status(HttpStatus.NOT_FOUND).body(errorResponseDTO);
}

1 Ответ

0 голосов
/ 12 октября 2018

Я считаю предоставление обработчика исключений для класса Exception плохой практикой.Большинство исключений обычно наследуются от класса Exception и, в свою очередь, перехватываются вашим обработчиком handleApplicationException.

Сосредоточьтесь на обработке определенных исключений.

Например, если клиент отправляет неверно отформатированный JSON и выбрасывается HttpMessageNotReadableException, вы можете отловить это в своем Обработчик исключений и делайте с ним что хотите, или просто удалив Обработчик исключений для пружины Exception.class, который вернет ответ 400 - BAD REQUEST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...