Как поймать много исключений Джексона весной? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть приложение Spring Boot REST, которое использует ControllerAdvice и ExceptionHandlers.Я использую Jackson в качестве сериализации / десериализации.Я использую PostMan в качестве своего клиента, и когда я отправляю разные ошибки, такие как неверные входные данные, неправильный синтаксис JSON и т. Д. Джексон выбрасывает определенные исключения.В настоящее время у меня есть (1) ExceptionHandler, в котором явно указывается каждый тип исключения, например MismatchedInputException, InvalidFormatException, InvalidDentinitionException ... это все формы JsonProcsessingException.

Есть ли способ просто поймать JsonProcessingException и всех его детей?Я возвращаю разные сообщения / коды состояния в зависимости от типов исключений.Поэтому, если возникает исключение, связанное с сериализацией, я хочу отправить сообщение об ошибке.

1 Ответ

0 голосов
/ 14 ноября 2018

Вы должны создать этот метод в классе @ControllerAdvice и проверить, какими исключениями вы хотите управлять, чтобы возвращать различные сообщения / коды состояния.

@ExceptionHandler({InvalidFormatException.class, MismatchedInputException.class})
public void handlerIllegalArgumentException(JsonProcessingException exception,
                                            ServletWebRequest webRequest) throws IOException {
    if(exception instanceof InvalidFormatException) {
        LOGGER.error(exception.getMessage(), exception);
        webRequest.getResponse().sendError(HttpStatus.CONFLICT.value(), exception.getMessage());
    } else if (exception instanceof MismatchedInputException) {
        LOGGER.error(exception.getMessage(), exception);
        webRequest.getResponse().sendError(HttpStatus.BAD_REQUEST.value(), exception.getMessage());
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...