Как настроить spring HandlerExceptionResolver для обработки исключения NullPointerException в jsp?

Из jsp выбрано исключение NullPointerException, например, используя <% null.toString(); %>

Это исключение не обрабатывается обработчиком HandlerExceptionResolver, но вызывается в веб-контейнер (tomcat) и преобразуется в code 500 error.

Как мне настроить spring для получения этой ошибки в моем HandlerExceptionResolver?

Подробнее:

  • Spring может быть сконфигурирован для обработки исключений, выведенных внутри контроллеров, но не исключений, созданных с помощью представления.
  • Конечно, я могу решить NullPointerException, но я хочу разработать решение, которое изящно разрешит любую возможную проблему в веб-приложении, чтобы отобразить пользователю удобное для пользователя сообщение.

Ответ 1

См. HandlerInterceptor. Вам понадобится метод afterCompletion. Затем вы можете перехватить ответ и затем установить соответствующую информацию заголовка для перенаправления на веб-страницу с настройкой контейнера. Вы правы, что Spring не имеет этой функции, это должно быть указано web.xml, который определяет, какие коды сопоставляются с какими страницами.

Ответ 2

Я не работал с этим конкретным битом фрейма spring, но документы говорят

"Интерфейс, который должен быть реализован объектами, чем может разрешать исключения, возникающие при отображении или исполнении обработчика, в типичном случае для представлений об ошибках. Реализации обычно регистрируются как beans в контексте приложения.

Представления ошибок аналогичны JSP-страницам с ошибками, но могут использоваться с любым исключением, включая любое проверенное исключение, с потенциально мелкозернистыми сопоставлениями для определенных обработчиков.

поэтому я бы предположил, что при условии, что NullPointer расширяет RuntimeException, фреймворк не предназначен для его захвата. Есть ли причина, по которой исключение (я) не может быть обработано в контроллере напрямую?