예외가 모든 예외의 부모임을 알고 있지만 특정 예외 클래스를 사용하여 @ExceptionHandler를 설정하면 해당 예외를 처리해야한다고 생각했습니다. 예외.@ExceptionHandler (MethodArgumentNotValidException.class)가 @ExceptionHandler (Exception.class)를 위해 무시되는 이유
아마도 다음 코드에서 놓친 것을 지적 할 수 있습니다. 따라서 MethodArgumentNotValidException이 processError 메소드가 아닌 processValidationError 메소드로 들어갈 수 있습니다.
@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' 클래스가 있습니다. –