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
# runtime-script-errors

浏览器兼容性

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
reportError

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

参见