На самом деле я посмотрел на источник пружинного DispatcherServlet и в строке 809 объясняется, почему Ошибка не может быть обработана
catch (Exception ex) {
Object handler = (mappedHandler != null ? mappedHandler.getHandler() : null);
mv = processHandlerException(processedRequest, response, handler, ex);
errorView = (mv != null);
}
Код - это та часть, где Spring обрабатывает ExceptionResolvers, может ли это быть на основе аннотации или на основе bean-компонента. Вы можете видеть, что Spring только содержит исключения, а не Throwable. Ошибка не является подклассом Исключения, но может быть выброшена, поэтому вы не сможете обработать ее с помощью Spring таким образом. В соответствующей заметке аннотацию также называют @ExceptionHandler, поэтому она подразумевает, что она не будет работать с ошибками.