WorkerGlobalScope: unhandledrejection イベント
unhandledrejection
イベントは、スクリプトのグローバルスコープ(通常は WorkerGlobalScope
)に送られるものであり、拒否ハンドラーのない Promise
が拒否されたときに発行されます。
これはデバッグや、予期せぬ状況でのフォールバックエラー処理を提供するのに有益です。
構文
このイベント名を addEventListener()
などのメソッドで使用するか、イベントハンドラープロパティを設定するかしてください。
self.addEventListener("unhandledrejection", (event) => {});
self.onunhandledrejection = (event) => {};
イベント型
PromiseRejectionEvent
です。 Event
から継承しています。
イベントプロパティ
PromiseRejectionEvent.promise
読取専用-
拒否されたプロミス (
Promise
) です。 PromiseRejectionEvent.reason
読取専用-
プロミスが拒否された理由を示す値または
Object
で、Promise.reject()
に渡されたものです。
例
基本的なエラーログ出力
この例は、未処理のプロミスの拒否に関する情報をコンソールにログ出力します。
self.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
また、onunhandledrejection
イベントハンドラープロパティを使用して、イベントリスナーを設定することができます。
self.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
既定の処理を防止
多くの環境(Node.js など)では、既定では処理されなかったプロミスの拒否をコンソールに報告します。unhandledrejection
イベントのハンドラーを追加することで、そこでイベントをキャンセルする preventDefault()
を呼び出すことで、ランタイムのログ出力コードで処理されるのを防ぐことができます。これは unhandledrejection
がキャンセル可能であるため、うまく動作します。
self.addEventListener("unhandledrejection", (event) => {
// code for handling the unhandled rejection
// …
// Prevent the default handling (such as outputting the
// error to the console)
event.preventDefault();
});
仕様書
Specification |
---|
HTML Standard # handler-workerglobalscope-onunhandledrejection |
ブラウザーの互換性
BCD tables only load in the browser