Я знаю, что Exception является родителем всех исключений, но я подумал, что когда вы устанавливаете @ExceptionHandler с определенным классом исключений, это должно обрабатывать определенные исключение.Почему @ExceptionHandler (MethodArgumentNotValidException.class) игнорируется в пользу @ExceptionHandler (Exception.class)
Возможно, вы можете указать, что я пропустил в следующем коде, поэтому MethodArgumentNotValidException перейдет в метод processValidationError, а не метод processError.
@ControllerAdvice
public class ExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ValidationErrorDTO processError(Exception e) {
return processErrors(e);
}
}
@ControllerAdvice
public class OtherExceptionHandler {
@ExceptionHandler(MethodArgumentNotValidException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
@ResponseBody
public ValidationErrorDTO processValidationError(MethodArgumentNotValidException ex) {
return processErrors(ex);
}
}
Вы уверены, что 'MethodArgumentNotValidException' выбрано, а не некоторый класс-оболочка? –
@SotiriosDelimanolis, не [ваш ответ] (http://stackoverflow.com/questions/19498378/setting-precedence-of-multiple-controlleradvice-exceptionhandlers/19500823#19500823) помогите здесь? :) –
@ MichałRybak Кажется, что у OP только один класс '@ ControllerAdvice'. –