Window:reportError() 方法

Window 接口的 reportError() 方法可模拟未捕获的 JavaScript 异常,向控制台或全局事件处理器报告错误。

此特性主要用于自定义事件分发或回调处理库。库可以借此特性以捕获回调代码中的的错误,并将其重新抛出至顶层处理器。这确保了一个回调中出现的异常不会阻碍其他回调的处理,同时也确保了在顶层调试时仍可方便地获取堆栈跟踪信息。

语法

js
reportError(throwable)

参数

throwable

error 对象,例如 TypeError

返回值

无(undefined)。

异常

TypeError

调用方法时没有传入 error 实参。

示例

检查特性是否可用:

js
if (typeof window.reportError === "function") {
  // 函数已定义
}

以下代码展示了如何创建和报告错误,以及如何使用 onerror 事件处理器属性或者为 error 事件添加监听器来捕获错误。请注意,为 onerror 设置的处理器必须返回 true 以防事件继续传播。

js
const newError = new Error("Some error message", "someFile.js", 11);
window.reportError(newError);

window.onerror = (message, source, lineno, colno, error) => {
  console.error(`消息:${error.message},行号:${lineno}`);
  return true;
};

window.addEventListener("error", (error) => {
  console.error(error.filename);
});

// 输出
// > "消息:Some error message,行号:11"
// > "someFile.js"

规范

Specification
HTML Standard
# runtime-script-errors

浏览器兼容性

BCD tables only load in the browser

参见