Window: unhandledrejection-Ereignis
Das unhandledrejection-Ereignis wird an den globalen Gültigkeitsbereich eines Skripts gesendet, wenn ein JavaScript-Promise ohne Rejection-Handler abgelehnt wird. Üblicherweise ist dies window, es kann aber auch ein Worker sein.
Dies ist beim Debugging und für eine Fehlerbehandlung als Rückfallebene in unerwarteten Situationen nützlich.
Syntax
Verwenden Sie den Ereignisnamen in addEventListener():
addEventListener("unhandledrejection", (event) => { })
Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:
onunhandledrejection = (event) => { }
Ereignistyp
Ein PromiseRejectionEvent. Erbt von Event.
Aliasse für Event-Handler
Neben der Window-Schnittstelle ist die Event-Handler-Eigenschaft onunhandledrejection auch auf den folgenden Zielen verfügbar:
Hinweise zur Verwendung
Wenn das unhandledrejection-Ereignis weitergegeben werden darf, wird schließlich eine Fehlermeldung in der Konsole ausgegeben. Sie können dies verhindern, indem Sie preventDefault() für das PromiseRejectionEvent aufrufen. Ein Beispiel finden Sie unten unter Standardbehandlung verhindern.
Da durch dieses Ereignis Daten preisgegeben werden können, lösen Ablehnungen von Promise-Objekten, die aus einem Cross-Origin-Skript stammen, dieses Ereignis nicht aus.
Beispiele
>Einfache Fehlerprotokollierung
Dieses Beispiel protokolliert Informationen über die unbehandelte Promise-Ablehnung in der Konsole.
window.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
Sie können den Event-Listener auch über die Event-Handler-Eigenschaft onunhandledrejection einrichten. Beachten Sie jedoch, dass dadurch gegebenenfalls andere über onunhandledrejection hinzugefügte Event-Listener ersetzt werden:
window.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
Standardbehandlung verhindern
Viele Umgebungen (etwa Node.js) melden unbehandelte Promise-Ablehnungen standardmäßig in der Konsole. Sie können dies verhindern, indem Sie einen Handler für unhandledrejection-Ereignisse hinzufügen, der – zusätzlich zu anderen Aufgaben, die Sie ausführen möchten – preventDefault() aufruft. Dadurch wird das Ereignis abgebrochen und nicht an den Protokollierungscode der Laufzeitumgebung weitergegeben. Dies funktioniert, weil unhandledrejection abgebrochen werden kann.
window.addEventListener("unhandledrejection", (event) => {
// code for handling the unhandled rejection
// …
// Prevent the default handling (such as outputting the
// error to the console)
event.preventDefault();
});
Spezifikationen
| Spezifikation |
|---|
| HTML> # event-unhandledrejection> |
| HTML> # handler-window-onunhandledrejection> |