Window: unhandledrejection-Event
Das unhandledrejection-Ereignis wird an den globalen Bereich eines Skripts gesendet, wenn ein JavaScript-Promise, das keine Ablehnungsbehandlung hat, abgelehnt wird; typischerweise ist dies das window, kann aber auch ein Worker sein.
Dies ist nützlich zum Debuggen und für die Bereitstellung von Fallback-Fehlerbehandlungen in unerwarteten Situationen.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Event-Handler-Eigenschaft.
addEventListener("unhandledrejection", (event) => { })
onunhandledrejection = (event) => { }
Ereignistyp
Ein PromiseRejectionEvent. Erbt von Event.
Event-Handler-Aliase
Zusätzlich zur Window-Schnittstelle ist die Event-Handler-Eigenschaft onunhandledrejection auch auf den folgenden Zielen verfügbar:
Verwendungshinweise
Das Zulassen des unhandledrejection-Ereignisses zu blubbern, führt schließlich dazu, dass eine Fehlermeldung in die Konsole ausgegeben wird. Sie können dies verhindern, indem Sie preventDefault() auf dem PromiseRejectionEvent aufrufen; siehe Verhinderung der Standardbehandlung unten für ein Beispiel.
Da dieses Ereignis Daten durchsickern lassen kann, lösen Promise-Ablehnungen, die von einem Cross-Origin-Skript stammen, dieses Ereignis nicht aus.
Beispiele
>Grundlegende 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 auch die onunhandledrejection-Event-Handler-Eigenschaft verwenden, um den Ereignislistener einzurichten:
window.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
Verhinderung der Standardbehandlung
Viele Umgebungen (wie 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—in Ergänzung zu anderen Aufgaben, die Sie ausführen möchten—[preventDefault()](/de/docs/Web/API/Event/preventDefault) aufruft, um das Ereignis abzubrechen und zu verhindern, dass es zur Laufzeitprotokollierung aufsteigt. Dies funktioniert, da 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> |