js error监控
window.onerror = function(message, source, lineno, colno, error) { ... }
功能参数:
message
:错误消息(字符串)。event
在HTMLonerror=""
处理程序中以(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