之前看见一个表情包
“代码报错怎么了,try...catch...盖住不就好了,能运行就行了”
“later...”
"公司倒闭了(吃泡面中...)"
其实try...catch...并不是万能的,这里开始梳理下吧。如有误,请指正。
try...catch...无法捕获promise和setTimeout等异步的函数
但通过await去包装一层,可以捕获promise回调函数内部的报错
但await 去包装setTimeout 却不行
为何呢?后面再慢慢去梳理为何,先搞清如何能捕获。
感觉似乎是try...catch...能捕获“同步函数”(await包装一层后也算同步了)
如果promise外没有包装await关键字,如何捕获异常呢?
unhandledrejection
大概去看了下,这个异常捕获个人觉得不生很好用,感兴趣可以自行查阅资料
setTimeout 在外面包装一层await依然无法捕获,那怎么捕获他呢?
window.onerror事件
window.onerror = function(e) {
console.log('e---', e)
}
// 它更多参数的语法更倾向前端异常监控的项目
// 但其实也不好用,最好的方式是setTimeout回调函数内部写一个try...catch...
不管是unhandledrejection或window.onerror,看搜索出来的结果,在前端异常监控网站里比较多,比如自研一款前端异常监控上报到服务器。
参考文章:
try...catch 使用场景
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。