Skip to content

前端监控

脚本错误

在前端领域,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);
});

Sentry