Exception がすべての例外の親であることは知っていますが、 @ExceptionHandler を特定の例外クラスで設定すると、その特定の例外を処理する必要があると思いました。
たぶん、次のコードで私が見逃したものを指摘できるので、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);
}
}