前端的异常捕获
同步错误捕获
try{ }catch()
window.onerror 捕获
返回true则错误不会往上抛。(不输出在控制台)
js
window.onerror = function(message, source, lineno, colno, error) {
console.log('捕获到异常:',{message, source, lineno, colno, error});
return true
}
setTimeout(() => {
Jartto;
}, 1100)
需要注意: onerror 最好写在所有 JS 脚本的前面,否则有可能捕获不到错误;src、href、link加载失败都可以捕获。
window.addEventListener('error', (err) => console.log(err)) 事件
等价于window.onerror事件
js
<scritp>
window.addEventListener('error', (error) => {
console.log('捕获到异常:', error);
}, true)
</script>
<img src="./jartto.png">
Vue.config.errorHandler = () =>
Vue中的错误监控
异步错误 捕获
Promise Catch
网页崩溃监控——Service Worker
Service Worker有独立工作线程
收集异常信息量太多,怎么办?
实际中,我们不得不考虑这样一种情况:如果你的网站访问量很大,那么一个必然的错误发送的信息就有很多条,这时候,我们需要设置采集率,从而减缓服务器的压力:
js
Reporter.send = function(data) {
// 只采集 30%
if(Math.random() < 0.3) {
send(data) // 上报错误信息
}
}