Мое приложение предоставляет интерфейс RESTful для выполнения некоторых действий. Я использую ExceptionMapper
перехватывать исключения как NoResultException
или EntityNotFoundException
, а затем возвращает код состояния 404, или исключения, как NumberFormatException
или ConstraintViolationException
и возвращает код состояния 400 ... и т.д.Same ExceptionMapper для разных исключений
Моя проблема заключается только в том, что ExceptionMapper
позволяет мне выбирать один вид Исключения каждый раз; поэтому я не могу использовать тот же класс для всех ошибок 400 и другой формы, все ошибки 404.
Есть ли способ создать ExceptionMapper
, который отображает два разных вида исключений?
Моего другой варианта изменить свои функции, чтобы вернуть ответ вместо строки (помечено как @Produces("application/json"));
и затем установите код состояния каждый раз, но я думаю, что это самое худшее ...
Я тоже думал об этом; но, как вы говорите, не чист. По факту; вы можете написать несколько ExceptionMappers для разных классов и ExceptionMapper суперкласса из них (например, Exception); и исключения с конкретным ExceptionMapper будут использовать его; и все остальные будут использовать ExceptionMapper своего суперкласса. –
Я по-прежнему предпочитаю кучу экземпляров проверок против фрагментации этой логики через несколько ненужных крошечных классов и упускаю из виду большую картину, то есть, какие коды ответов возвращаются для каких-то исключений – Amalgovinus