稳定性建设之JavaScript代码不能被阻断
背景
js代码可能会因为某些原因,导致出错,进而整个后续代码有可能都被阻断。直接影响线上的稳定性
最常见的js被阻断的情况
console.log(111)
// 预期 a = {}
// 结果
a = undefined
a.a = 1
console.log(222) // js代码不能执行到这一行
这个代码很明显会报错,在a.a = 1
这一行开始报错,后续的js代码被阻断了,console.log(222)
打印不出来
解决办法
- 解决办法也很简单,用 try…catch… 捕获住错误就好了
console.log(111)
try {// 预期 a = {}// 结果a = undefineda.a = 1
} catch (e) {console.error(e)
}
console.log(222) // js代码可以执行到这一行
容易被我们忽视的点
1. 没考虑到错误上报
- 上面的demo没有考虑错误上报,发生错误时,外部根本捕获不到(即使你接入了se