Angular 5: может ли HttpInterceptor заменить ErrorHandler
Читая Обработка ошибок в Angular 5, я столкнулся с 2 способами: 1. HttpInterceptor и 2. ErrorHandler.
- Является ли HttpInterceptor лучшим решением, чем ErrorHandler?
- Можете ли вы иметь обе реализации в своем приложении?
Имеет ли этот сценарий смысл? Наличие HttpInterceptor для обработки ошибок HTTP-вызовов и добавления заголовка к запросу и т. Д., А затем для передачи необработанной ошибки с помощью Observable.throw(error), чтобы ErrorHandler мог обрабатывать ее как глобальный уровень?
1 ответ
Одним из традиционных способов обработки ошибок в Angular является предоставление класса ErrorHandler. Этот класс можно расширить, чтобы создать собственный глобальный обработчик ошибок. Это также полезный способ обработки всех возникающих ошибок, но в основном он полезен для отслеживания журналов ошибок.
Реализуя обработку ошибок в HttpClient или HttpInterceptor, вы можете работать напрямую со всеми HTTP-запросами в своем приложении, предоставляя возможность преобразовать запрос, повторить его и т. Д. Следовательно, ErrorHandler полезен для более общей обработки ошибок, но HttpInterceptor предоставляет гораздо более надежный способ обработки ошибок, связанных с сервером и сетью.
Пожалуйста, перейдите по этой ссылке, необходимые детали для вашего вопроса подробно описаны в этой статье.
HttpInterceptor для обработки ошибок HTTP-вызовов и добавления заголовка в запрос и т. Д. - если в вашем ответе клиенту есть ошибка, зачем добавлять заголовок, указывающий, что это ошибка?
Я лично сделал через ErrorHandler, сервис возвращает наблюдаемое, а затем обрабатывает ошибку в компоненте с помощью собственного провайдера errorService и т. Д. Все личные предпочтения.
Компонент (вызов службы) Служба (возвращает ответ на компонент) Компонент определяет, если Ошибка или Успех через подписку, если Ошибка, обрабатывать ошибку с помощью провайдера errorService в компоненте.
Мои 2 цента.