Skip to content

前端的异常捕获

同步错误捕获

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)      // 上报错误信息
  }
}