如何使用 Sentry 捕获*所有*错误和异常?

问题描述 投票:0回答:1

我的 Chrome 页面的

console
中出现了 24 个错误,Sentry 只记录了一个。

我已遵循文档并确保 Sentry 在页面的

<head>
中加载并初始化,在 jQuery 之后,但在我们的 CMS 供应商代码和自定义捆绑包之前:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://browser.sentry-cdn.com/5.8.0/bundle.min.js" crossorigin="anonymous"</script>
<script>
  Sentry.init({
    dsn: "https://...@.../..."
  });
</script>
<script src="..."></script>

我还按照此处的描述修补了Sentry,以使用

console.error()
复制
Sentry.captureMessage()
,这样我现在可以在Sentry中看到消息。

但是我仍然在与三种类型的错误作斗争:

  • Uncaught TypeError
  • 来自我们 CMS 的 JS 文件出现错误
  • 一些非常特殊的
    <img>
    srcset
    错误

console output

关于

srcset
错误:我已经向图像添加了
onerror
处理程序。它们在某些情况下会被调用,但在这种特殊情况下不会被调用(
srcset
属性在文件名中有一个空格,这违反了语法);诚然,这个问题应该报告给 Chrome 开发团队,而不是在 Sentry 中修复。

我尝试自己捕获这些错误并将它们手动重定向到 Sentry,但是以下监听器都没有在 Chrome 中捕获它们(抱歉

.join()
,只是测试代码,我没有美化它):

window.onerror = function (errorMsg, url, lineNumber) {
  alert(["window.onerror", errorMsg, url, lineNumber].join());
  return true;
};

window.addEventListener("unhandledrejection", function (e) {
  alert(["window: Unhandled Rejection", e.reason.message].join());
});

window.addEventListener("rejectionhandled", function (e) {
  alert(["window: rejectionhandled", e.reason.message].join());
});

window.addEventListener("error", function (e) {
  alert(["window: Error", e.reason.message].join());
});

$.error = function (message) {
  alert(["jQuery error", message].join());
};

那么:我是否遗漏了任何内容(一些 Sentry 配置设置、我应该捕获的其他浏览器事件等)?

javascript error-handling console sentry
1个回答
0
投票

Sentry SDK 包含多种方法,您可以使用它们显式报告错误、事件以及 except 子句、代码关键区域等中的自定义消息。

看看这个链接:

捕获错误

© www.soinside.com 2019 - 2024. All rights reserved.