参见的错误分类
- js运行错误
- 资源加载错误
- 未处理的promise错误
- 异步请求错误
js 运行错误
window.onerror 与 winod.addEventListenr(‘error’) 捕获 js 运行时错误
window.error = function (msg, url, lineNo, columnNo, error) {// demo// msg: Uncaught TypeError: Uncaught ReferenceError: a is not defined// error.statck: TypeError: ReferenceError: a is not defined at// window.addEventListener('error', event => (){// 处理错误信息}window.addEventListener('error', event => (){// 处理错误信息}, false);
资源加载错误
资源加载错误使用addEventListener去监听error事件捕获
window.addEventListener('error', event => (){// 过滤js errorlet target = event.target || event.srcElement;let isElementTarget = target instanceof HTMLScriptElement || target instanceof HTMLLinkElement || target instanceof HTMLImageElement;if (!isElementTarget) return false;// 上报资源地址let url = target.src || target.href;console.log(url);}, true);
未处理的 Promise 错误处理方式
实现原理:当promise被reject并且错误信息没有被处理的时候,会抛出一个unhandledrejection。
这个错误不会被window.onerror以及window.addEventListener(‘error’)捕获,但是有专门的window.addEventListener(‘unhandledrejection’)方法进行捕获处理。
// 一开始没有捕获错误window.addEventListener('unhandledrejection', event => {// 错误的详细信息在reason字段// demo:settimeout errorconsole.log(event.reason);});// 一开始没有捕获 触发 unhandledrejection 之后,又被处理了 就触发 rejectionhandledwindow.addEventListener('rejectionhandled', event => {console.log('rejection handled'); // 1秒后打印"rejection handled"});
