Подтвердить что ты не робот

Глобальная обработка исключений в Джерси

Есть ли способ иметь глобальную обработку исключений в Джерси? Вместо отдельных ресурсов, имеющих блоки try/catch, а затем вызывая некоторый метод, который затем санирует все исключения, которые должны быть отправлены обратно клиенту, я надеялся, что есть способ поставить это, когда на самом деле вызываются ресурсы. Возможно ли это? Если да, то как?

Вместо того, чтобы sanitize(e) выбрал какое-то исключение, настроенное Джерси, для сервлета Джерси:

@GET
public Object getStuff() {
    try {
        doStuff();
    } catch (Exception e) {
        ExceptionHandler.sanitize(e);
    }
}

Наличие:

@GET
public Object getStuff() throws Exception {
    doStuff();
}

где исключение будет передано тому, что я могу перехватить, и вызовет sanitize(e) оттуда.

Это действительно просто для того, чтобы упростить все ресурсы Джерси и гарантировать, что исключения, возвращаемые клиенту, всегда в какой-то понятной форме.

4b9b3361

Ответ 1

Да. JAX-RS имеет концепцию ExceptionMappers. Вы можете создать свой собственный интерфейс ExceptionMapper, чтобы сопоставить любое исключение с ответом. Для получения дополнительной информации см.: https://jersey.github.io/nonav/documentation/1.12/jax-rs.html#d4e435