reportError() グローバル関数

注: この機能は Web Worker 内で利用可能です。

reportError() グローバルメソッドは、 JavaScript の捕捉されない例外をエミュレートして、コンソールやグローバルイベントハンドラにエラーを報告するために使用することができます。

この機能は、主にカスタムイベント配信ライブラリーや コールバック操作ライブラリーを対象としています。 ライブラリはこの機能を使用して、コールバックコードのエラーを捕捉し、最上位のハンドラーに投げ直すことができます。 これにより、 1 つのコールバックで例外が発生しても、他のコールバックが処理されなくなることがなくなると同時に、スタックトレース情報が最上位レベルのデバッグに利用できるようになります。

構文

js
reportError(throwable)

引数

throwable

エラーオブジェクト、例えば TypeError です。

返値

なし (undefined)。

例外

TypeError

エラー引数なしでこのメソッドが呼び出された場合。

このメソッドが使用できるかどうかの機能検出です。

js
if (typeof self.reportError === "function") {
  // この関数が定義されている
}

以下のコードでは、どのようにエラーを作成して報告する方法、グローバルな onerror ハンドラーを使用するか、 error イベントのリスナーを追加してエラーを捕捉する方法を示しています。 onerror に割り当てられたハンドラーは、 true を返さなければ、イベントがそれ以上伝播しないことに注意してください。

js
const newError = new Error("エラーメッセージ", "someFile.js", 11);
self.reportError(newError);

window.onerror = (message, source, lineno, colno, error) => {
  console.error(`メッセージ: ${error.message}、行番号: ${lineno}`);
  return true;
};

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

// 出力
// > "メッセージ: エラーメッセージ、行番号: 11"
// > "someFile.js"

仕様書

Specification
HTML Standard
# runtime-script-errors

ブラウザーの互換性

BCD tables only load in the browser

関連情報