Как перехватить все исключения (единую централизованную обработку исключений) в Spring Boot на приложении контейнера Servlet? - PullRequest
0 голосов
/ 11 марта 2019

Я ищу способ обработки буквально всех Exception с в веб-приложении, основанный на централизованном запуске Spring Boot на контейнере сервлетов (Tomcat, Jetty).

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

Я просто не хочу удивляться тому, что некоторые типы ошибок будут автоматически обрабатываться вне моего обработчика ошибок, например, создание страниц ошибок, специфичных для контейнера, специальная обработка в некоторых случаях (например, ошибка диспетчеров не найдена).

Другими словами Я ищу полную централизованную обработку ошибок cusotomizable , не только заменяющую внешний вид страницы ошибок по умолчанию.

Примечание Я не ищутакие решения, как:

  • @ControllerAdvice с @ExceptionHandler(Exception.class), поскольку он не будет обрабатывать исключения, указанные в фильтрах контейнера (например, SpringФильтры безопасности и пользовательские)
  • Параметр «Диспетчерский сервлет setThrowExceptionIfNoHandlerFound» предназначен только для устранения некоторых проблем со страницей по умолчанию 404
  • Замена @Bean(name = "error") вместо «Страница ошибки Whitelabel» с пользовательским представлением в видена данный момент обработка ошибок основана на некоторых обработанных атрибутах, и исходный экземпляр Exception потерян
  • Решения основаны на разрешении представления Spring, так как я хочу необработанный доступ к исключению и ответу
  • Решения, основанные намеханизм пересылки сервлетов для повторной обработки ответа по другому пути запроса, что затрудняет поиск и устранение неисправностей

Однажды мне удалось создать такой обработчик ошибок на основе фильтра Tomcat с наивысшим приоритетом вместе с настройкой диспетчера сервлетов инесколько грязных настроек, чтобы избежать визуализации страницы ошибки Tomcat, но я ищу лучшее решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...