Создайте правильный статус для каждого исключения в @ExceptionHandler - PullRequest
0 голосов
/ 23 мая 2019

Я использую @ControllerAdvice для перехвата исключений в моем контроллере Spring Boot. В @ExceptionHandler я могу вручную указать ограниченное количество исключений с их кодами состояния.

Мой вопрос: как я могу справиться со всеми другими исключениями и их статусами?

Я могу указать некоторые исключения с их статусами:

@ExceptionHandler(MethodArgumentNotValidException.class)
 public ResponseEntity<Object> argNotValidExceptionHandler(MethodArgumentNotValidException ex){
    String localizeMessage = ex.getLocalizeMessage();

    ErrorMessage errorMessage = new ErrorMessage(LocalDateTime.now(), localizeMessage);

    return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(errorMessage);
}

Поскольку я хотел бы перехватить все исключения, похоже, мне следует дополнительно указать Exception.class со статусом INTERNAL_SERVER_ERROR в @ ExceptionHandler.

В этот момент я получу статус 500 для всех других исключений, даже с 4 ** статусами.

Как я могу создать правильный код состояния из каждого исключения, чтобы отправить его клиенту?

1 Ответ

0 голосов
/ 23 мая 2019

Вы можете создавать настраиваемые классы исключений и, определяя эти настраиваемые классы исключений, настраивать код состояния http, который следует отправлять в случае возникновения этого исключения.Поэтому, когда вы поймали это исключение, обработчик исключений, вы можете получить код состояния http, который должен быть возвращен пользователю из исключения, и отправить его.

...