К сожалению, я тоже страдал от этого.Я обнаружил, что если вы по ошибке реализуете Throwable
вместо Exception
, распознаватель исключений просто сбросит ваш Throwable
как IllegalStateException
.Это не сможет вызвать ваш @ExceptionHandler
.
Если вы внедрили Throwable
вместо Exception
, попробуйте изменить его на Exception
.
Вот код, о котором идет речь, InvocableHandlerMethod
catch (InvocationTargetException e) {
// Unwrap for HandlerExceptionResolvers ...
Throwable targetException = e.getTargetException();
if (targetException instanceof RuntimeException) {
throw (RuntimeException) targetException;
}
else if (targetException instanceof Error) {
throw (Error) targetException;
}
else if (targetException instanceof Exception) {
throw (Exception) targetException;
}
else {
String msg = getInvocationErrorMessage("Failed to invoke controller method", args);
throw new IllegalStateException(msg, targetException);
}
}