このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docsコミュニティーについてもっと知り、仲間になるにはこちらから。
WorkerGlobalScope: unhandledrejection イベント
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2020年7月.
unhandledrejection イベントは、スクリプトのグローバルスコープ(通常はWorkerGlobalScope)に送られるものであり、拒否ハンドラーのないPromise が拒否されたときに発行されます。
これはデバッグや、予期せぬ状況でのフォールバックエラー処理を提供するのに有益です。
In this article
構文
このイベント名を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> # handler-workerglobalscope-onunhandledrejection> |