3-8 怎么处理项目中的异常捕获行为?

一、代码执行的错误捕获
1.try…………catch
• 能捕获到代码执行的错误
• 捕获不到语法的错误
• 无法处理异步中的错误
• 使用try……catch包裹,影响代码可读性
2.window.onerror
• 无论是异步还是非异步错误,onerror都能捕获到运行时错误
• onerrer主要是来捕获预料之外的错误,而try……catch则是用来在可预见情况下监控特定的错误,两者结合使用更高效
• window.onerror函数只有在返回true的时候,异常才不会向上抛出,否则即使是知道异常的发生控制台还是会显示:Uncaught Error:xxxxx
• 当我们遇到报404网络请求异常的时候,onerror是无法帮助我们捕获到异常的
缺点:监听不到资源加载的报错error,事件处理函数只能声明一次,不会重复执行多个回调
3.window.addEventListener(‘error’,function,boolean)
可以监听到资源加载报错,也可以注册多个事件处理函数
window.addEventListener(“error”,(msg,url,row,col,error)=>{},true)
但是这种方式虽然可以捕捉到网络请求的异常,却无法判断HTTP的状态是404还是其他比如500等等,所以还需要配合服务端日志才进行排查分析才可以
4.window.addEventListener(‘unhandledrejection’)
捕获Promise错误,当Promise被reject处理器的时候,会触发unhandledrejection事件;这可能发生在window下,但也可能发生在Worker中。这对于调试回退错误处理非常有用
二、资源加载的错误捕获
• 1.imgObj.onerror(),图片不存在的时候就会触发onerror事件
• 2.performance.getEntries(),获取到成功加载的资源,对比可以间接的捕获错误
• 3.window.addEventListener(‘error’,function,true),会捕获但是不冒泡,所以window.onerror不会触发,捕获阶段可以触发

posted @ 2022-03-08 22:40  林见夕  阅读(98)  评论(0)    收藏  举报