js error监控

window.onerror = function(message, source, lineno, colno, error) { ... }

功能参数:

  • message:错误消息(字符串)。event在HTML onerror=""处理程序中(sic!)的形式提供
  • source:引发错误的脚本的URL(字符串)
  • lineno:引发错误的行号(数字)
  • colno:发生错误的行的列号(数字)
  • error错误对象(对象)

 

js语法错误

通过window.onerror来捕获JavaScript异常

//监控js错误
    window.onerror = function(msg,_url,line,col,error){
        //采用异步的方式,避免阻塞
        setTimeout(function(){
            //不一定所有浏览器都支持col参数,如果不支持就用window.event来兼容
            col = col || (window.event && window.event.errorCharacter) || 0;
            if (error && error.stack){
                //msg信息较少,如果浏览器有追溯栈信息,使用追溯栈信息
                defaults.msg = error.stack.toString();

            }else{
                defaults.msg = msg;
            }
            defaults.data=JSON.stringify({
                resourceUrl:_url,
                pageUrl:location.href,
                category:'js error',
                line:line,
                col:col
            });
            defaults.t=new Date().getTime();
            defaults.level='error';
            // 合并上报的数据,包括默认上报的数据和自定义上报的数据
            var reportData=Object.assign({},params.data || {},defaults);
            // 把错误信息发送给后台
            report(url,reportData)
        },0);
    };

 

try catch

1、事情还有得挽回,换条路走
try {
执行某个逻辑
} catch (e) {
出问题鸟,换个逻辑执行
}

2、体面的退出
try {
正常流程
} catch (e) {
弹个框告诉用户不好意思出了点问题
如果是用户的错就告诉用户什么地方错了
如果是程序的错,就告诉用户不好意思没法执行
}

  

参考文档 

https://www.jianshu.com/p/fd6ddace0a87

https://www.cnblogs.com/yangheng/p/6018224.html

原文地址:https://www.cnblogs.com/1032473245jing/p/10025199.html