Как настроить 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, фреймворк не предназначен для его захвата. Есть ли причина, по которой исключение (я) не может быть обработано в контроллере напрямую?