Angular 5: может ли HttpInterceptor заменить ErrorHandler

Читая Обработка ошибок в Angular 5, я столкнулся с 2 способами: 1. HttpInterceptor и 2. ErrorHandler.

  1. Является ли HttpInterceptor лучшим решением, чем ErrorHandler?
  2. Можете ли вы иметь обе реализации в своем приложении?

Имеет ли этот сценарий смысл? Наличие HttpInterceptor для обработки ошибок HTTP-вызовов и добавления заголовка к запросу и т. Д., А затем для передачи необработанной ошибки с помощью Observable.throw(error), чтобы ErrorHandler мог обрабатывать ее как глобальный уровень?

1 ответ

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

Реализуя обработку ошибок в HttpClient или HttpInterceptor, вы можете работать напрямую со всеми HTTP-запросами в своем приложении, предоставляя возможность преобразовать запрос, повторить его и т. Д. Следовательно, ErrorHandler полезен для более общей обработки ошибок, но HttpInterceptor предоставляет гораздо более надежный способ обработки ошибок, связанных с сервером и сетью.

Пожалуйста, перейдите по этой ссылке, необходимые детали для вашего вопроса подробно описаны в этой статье.

HttpInterceptor для обработки ошибок HTTP-вызовов и добавления заголовка в запрос и т. Д. - если в вашем ответе клиенту есть ошибка, зачем добавлять заголовок, указывающий, что это ошибка?

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

Компонент (вызов службы) Служба (возвращает ответ на компонент) Компонент определяет, если Ошибка или Успех через подписку, если Ошибка, обрабатывать ошибку с помощью провайдера errorService в компоненте.

Мои 2 цента.

Другие вопросы по тегам