2016-05-31 2 views
2

Я пишу приложение Spring Boot. И сейчас я реализую обработку исключений.Обработка исключений Java SpringBoot

У меня возникла следующая проблема.

Моих обработчиков исключений выглядеть следующим образом:

@ControllerAdvice 
public class SpecialExceptionHandler { 

@ExceptionHandler(MissingServletRequestParameterException.class) 
@ResponseStatus(HttpStatus.BAD_REQUEST) 
public ResponseObject missingServletErrorHandler(HttpServletRequest req, MissingServletRequestParameterException exception) { 

//do something 
return responseObject; 
}} 

И я получил общий обработчик исключений, который выглядит

@ControllerAdvice 
public class GeneralExceptionHandler {  

@ExceptionHandler(Exception.class) 
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) 
public ResponseObject defaultErrorHandler(HttpServletRequest req, Exception exception) { 
// do something 
return responseObject; 
}} 

Но у меня проблема: мое приложение всегда работает в GeneralExceptionHandler вместо специальный обработчик, если я не изменю имя класса GeneralExceptionHandler на имя, которое поступает в алфавитном порядке после специального обработчика исключений (например, измените значение «GeneralExceptionHandler» на «zGeneralExceptionHandler»).

Как решить эту проблему?

ответ

1

Вы можете попробовать добавить @Order(N) аннотаций на ваших ControllerAdvice с, чтобы заставить их регистрации порядка (где N является int определение порядка)

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