2013-07-04 5 views
0

У меня есть приложение Spring 3.2, и я создал REST API на основе Spring MVC. Я использую аннотацию @ControllerAdvice для обработки пользовательских исключений. Например:Обработка пользовательских исключений Spring REST API

@ControllerAdvice 
public class RestResponseEntityExceptionHandler { 

    @ExceptionHandler(MyCustomException.class) 
    @ResponseStatus(HttpStatus.CONFLICT) 
    @ResponseBody 
    public ExceptionMessage handleMyCustomException(MyCustomException ex){ 
     return new ExceptionMessage(ex.getClass().getName(), ex.getMessage(), ex.getExceptionCode()); 
    } 
} 

Вопрос заключается в том, что я вижу, как мой заказ исключение, но метод обработчика исключений фактически не выполняется, и, следовательно, мое сообщение об исключении не возвращается клиенту. Вместо этого я заметил в журналах, как DefaultHandlerExceptionResolver обрабатывает исключение (с использованием генератора Spring, ServletRequestBindingException в методе GET). Как я могу избавиться от этой проблемы?

Спасибо!

+0

Является ли пакет «RestResponseEntityExceptionHandler» указанным в атрибуте «базовый пакет компонента»? – zeroflagL

+0

@zeroflagL Да, это – jarandaf

+1

Подождите, 'ServletRequestBindingException'? Похоже, что ваше исключение выбрасывается до вызова метода обработчика. – zeroflagL

ответ

0

ServletRequestBindingException - это намек на то, что что-то пошло не так, как до контроллера. В этом случае проблема с привязкой.

Обработчики исключений, аннотированные @ExceptionHandler, вызывается только в том случае, если исключение выбрано в методе обработчика контроллера (@RequestMapping).

+1

Есть ли какой-либо способ настроить обработку исключений в автоматически открытых конечных точках отдыха с пружинными данными? – Rafael

Смежные вопросы