【问题标题】:Angular 5: Can HttpInterceptor Replace ErrorHandlerAngular 5:HttpInterceptor 可以替换 ErrorHandler
【发布时间】:2018-12-02 06:58:15
【问题描述】:

在阅读 Angular 5 中的错误处理时,我遇到了两种方法:1. HttpInterceptor 和 2. ErrorHandler。

  1. HttpInterceptor 是不是比 ErrorHandler 更好的解决方案?
  2. 能否在您的应用中同时实现这两种功能?

这种情况有意义吗?让 HttpInterceptor 处理 HTTP 调用错误并将 Header 添加到请求等,然后通过使用 Observable.throw(error) 中继未处理的错误,以便 ErrorHandler 可以将其作为全局级别处理?

【问题讨论】:

    标签: angular error-handling angular-http-interceptors angular-errorhandler


    【解决方案1】:

    在 Angular 中处理错误的一种传统方式是提供一个 ErrorHandler 类。可以扩展此类以创建您自己的全局错误处理程序。这也是处理发生的所有错误的有用方法,但主要用于跟踪错误日志。

    通过在 HttpClient 或 HttpInterceptor 中实现错误处理,您可以直接处理应用程序中的所有 HTTP 请求,提供转换请求、重试请求等功能。因此,ErrorHandler 对于更通用的错误处理很有用,但 HttpInterceptor 提供了一种更健壮的方式来处理与服务器和网络相关的错误。

    请通过此link,本文详细提供了您的问题所需的详细信息。

    【讨论】:

      【解决方案2】:

      HttpInterceptor 用于处理 HTTP 调用错误并将 Header 添加到请求等 - 如果您对客户端的响应有错误,为什么要添加一个表明错误的标头?

      我个人通过 ErrorHandler 完成,服务返回 observable,然后使用自己的 errorService 提供程序等处理组件中的错误。所有个人喜好。

      组件(调用服务) 服务(返回对组件的响应) 组件通过订阅确定是错误还是成功 如果出错,通过组件中的errorService提供者处理错误

      我的 2 美分。

      【讨论】:

      • 您有可以提供的代码示例或代码片段吗?在从 ErrorHandler 服务返回时,您是否返回类似 Angular 6 TOH 示例的“return of(result)”?如果是这样,你怎么知道它到达组件时发生了错误?
      • http拦截器处理http请求和响应,httpError类型的也是如此。它基本上是管理 Angular 中的 http 错误的自然场所。
      猜你喜欢
      • 2018-05-14
      • 2018-10-14
      • 2018-05-16
      • 2018-11-07
      • 1970-01-01
      • 2020-04-26
      • 1970-01-01
      • 2018-10-02
      • 2018-07-18
      相关资源
      最近更新 更多