对于实时网络应用程序,ng2中前端错误处理的最佳解决方案是什么?
使用'Http拦截器'进行前端错误处理是否可以?请解释一下这些事情。
答案 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
并重新抛出错误,进行调用的服务可以进行一些额外的错误处理。
希望这会有所帮助:)