【问题标题】:what is the difference between error handler and interceptor in angular 2?角度2中的错误处理程序和拦截器有什么区别?
【发布时间】:2018-06-19 21:12:26
【问题描述】:

还有什么是用于实时 Web 应用程序的 ng2 中前端错误处理的最佳解决方案?

前端错误处理可以使用“Http拦截器”吗?请解释一下这些事情。

【问题讨论】:

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


    【解决方案1】:

    angular 2中的错误处理程序和拦截器有什么区别?:

    根据 Angular 文档,它们是这样定义的:

    ErrorHandler:ErrorHandler 的默认实现将错误消息打印到控制台。


    HttpInterceptor:通常拦截器会在返回 next.handle(transformedReq) 之前转换传出请求。拦截器也可以选择转换响应事件流,方法是在 next.handle() 返回的流上应用额外的 Rx 运算符。

    更罕见的是,拦截器可能会选择完全处理请求本身,并组成一个新的事件流,而不是调用 next.handle()。这是可以接受的行为,但请记住,其他拦截器将被完全跳过。

    拦截器在事件流上为单个请求返回多个响应的情况也很少但有效。

    这使我相信ErrorHandler 的唯一目的是确定错误将如何持续存在,以便开发人员意识到应用程序中发生了错误。默认行为是将错误保留在控制台中,开发人员可以在其中轻松确定应用程序是否引发了错误。一个简单的用例是,如果您想在某种类型的持久存储中记录错误,以便开发人员可以梳理日志以查找任何客户端错误。

    现在,当您想在将请求发送到服务器之前对其进行操作时,可以使用HttpInterceptor。一个简单的用例是,如果您想为所有请求添加标头、操作正文、小写请求 URL 等。

    在 ng2 中用于实时 Web 应用的前端错误处理的最佳解决方案是什么?:

    如果您只想在 Angular 应用中记录任何错误,请编写您自己的自定义 ErrorHandler 以拦截错误处理。在您的自定义错误处理程序中,使用服务将错误记录到持久存储中。

    前端错误处理可以使用“Http拦截器”吗? 这完全取决于您的用例。假设您想在发生 500 时通过 SnackBar 通知客户端,您可以编写一个拦截器来捕获请求,检查 500 的响应,然后显示红色 SnackBar 并重新抛出错误,以便服务调用可以做一些额外的错误处理。

    希望这会有所帮助:)

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 2019-04-06
      • 2019-06-29
      • 1970-01-01
      • 2019-07-18
      • 1970-01-01
      • 2018-11-04
      • 2022-11-20
      • 1970-01-01
      相关资源
      最近更新 更多