前端监控
脚本错误
在前端领域,js给我们提供的错误捕获的方式总共有三种
1.同步代码错误
try...catch(只能捕获同步异常)
js
try {
throw new Error('同步错误');
} catch (e) {
console.error('捕获到了:', e);
}
📌 注意:不能捕获异步任务中的错误,比如 setTimeout、Promise 内部抛出的错误。
2.全局错误捕获
window.onerror(可以捕获大部分运行时错误)
js
window.onerror = function(message, source, lineno, colno, error) {
console.error('window.onerror 捕获:', message, error);
};
📌 可捕获:运行时错误、语法错误、跨域脚本(需配置 CORS)、资源加载失败(部分)。
3.window.addEventListener('error')
适合捕获资源加载错误(如图片、脚本、样式失败)
js
window.addEventListener('error', function(event) {
if (event.target instanceof HTMLScriptElement) {
console.error('脚本加载失败:', event.target.src);
} else {
console.error('常规错误:', event.message);
}
}, true); // 必须设置为 true,捕获到捕获阶段的资源错误
4.window.onunhandledrejection(捕获未 catch 的 Promise 错误)
js
window.addEventListener('unhandledrejection', function(event) {
console.error('Promise 未捕获错误:', event.reason);
});