角度2中错误处理程序和拦截器之间有什么区别?

时间:2018-01-10 16:22:11

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

对于实时网络应用程序,ng2中前端错误处理的最佳解决方案是什么?

使用'Http拦截器'进行前端错误处理是否可以?请解释一下这些事情。

1 个答案:

答案 0 :(得分:2)

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

基于Angular文档,这是它们的定义方式:

  

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

  

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

     

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

     

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

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

现在,当您想要在将请求发送到服务器之前处理请求时,会使用HttpInterceptor。一个简单的用例是,如果你想为所有请求添加标题,操作正文,小写请求URL等等。

对于实时网络应用,ng2中前端错误处理的最佳解决方案是什么?

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

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

希望这会有所帮助:)