Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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.

js
addEventListener("unhandledrejection", (event) => { })

onunhandledrejection = (event) => { }

Ereignistyp

Ein PromiseRejectionEvent. Erbt von Event.

Event PromiseRejectionEvent

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.

js
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:

js
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.

js
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

Browser-Kompatibilität

Siehe auch