По-видимому, вам необходимо регистрировать все неиспользуемые исключения для мониторинга общего состояния вашего приложения. Для этой цели лучшим вариантом будет использование ExceptionHandler .
Если выдается незапланированное исключение, оно будет получено в следующем порядке:
- ExceptionLogger
- ExceptionFilter
- ExceptionHandler (если не обработано)
Чтобы лучше понять разницу между ними, я объясню цель каждого из них.
ExceptionLogger
Решение для просмотра всех неисследованных исключений, пойманных Web API. Существует вероятность возникновения исключения до того, как вы даже нажмете на действие контроллера или после того, как контроллер уже вернул ответ о результате действия (помните, что возвращаемое значение из действия не передается напрямую в браузер, но обрабатывается в дальнейшем запросом / ответом) трубопровод).
Например, исключение может возникнуть в конструкторе контроллера, во время маршрутизации, сериализации ответов и т. Д.
Могут быть зарегистрированы несколько регистраторов исключений, и все они будут вызваны в случае исключения.
Имейте в виду, что регистраторы исключений вызываются до фильтров исключений, где они будут обрабатываться, поэтому вы можете получить много несущественной информации, если их зарегистрировать.
Цель: просмотреть все необработанные исключения (до того, как они даже достигли фильтров исключений)
Область применения: global
ExceptionFilter
Используйте это для обработки ожидаемых исключений (например, UnauthorizedException, генерируемых вашей бизнес-логикой) и настраивайте ответ в зависимости от типа исключения. Другими словами, используйте его для воздействия на исключение (например, если исключение - UnathorizedException, то перенаправьте пользователя на страницу входа).
Первый фильтр для обработки "выигрышей" исключения, так что другие обработчики исключений даже не будут вызваны, если исключение уже было обработано (объект ответа установлен)
- Назначение: обрабатывать (не регистрировать) исключения
- Область действия: за действие, на контроллер, глобально
ExceptionHandler
Это можно и нужно использовать для регистрации незапланированных исключений. Только один может быть зарегистрирован на одну заявку. Его также можно использовать для отображения пользователю общей страницы ошибки - «Произошла неизвестная ошибка».
- Цель: регистрировать и обрабатывать непредсказуемые / неожиданные исключения
- Область применения: global
Я рекомендую взглянуть на эту статью