WorkerGlobalScope: reportError() 方法

注意:此功能仅在 Web Workers 中可用。

WorkerGlobalScope 接口的 reportError() 方法可用于向全局作用域的控制台或事件处理程序报告错误,模拟未捕获的 JavaScript 异常。

此功能主要用于自定义事件分派或回调函数操作的库。库可以使用此功能来捕获回调代码中的错误,并将它们重新抛出给顶层处理程序。这确保了一个回调中的异常不会阻止其他回调被处理,同时又能确保堆栈跟踪信息在顶层调试时仍然易于获取。

语法

js
reportError(throwable)

参数

throwable

一个错误对象,例如 TypeError

返回值

无(undefined)。

异常

TypeError

调用该方法时不带错误参数。

示例

使用以下代码进行该方法的特性测试

js
if (typeof self.reportError === "function") {
  // function is defined
}

以下代码展示了如何创建和报告一个错误,以及如何使用 onerror 事件处理程序属性或通过添加 error 事件的监听器来捕获它。请注意,分配给 onerror 的处理程序必须返回 true 才能阻止事件进一步传播。

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

self.onerror = (message, source, lineno, colno, error) => {
  console.error(`message: ${error.message}, lineno: ${lineno}`);
  return true;
};

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

// Output
// > "message:Some error message, lineno: 11"
// > "someFile.js"

规范

规范
HTML
# runtime-script-errors

浏览器兼容性

另见