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-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():

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

Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:

js
onunhandledrejection = (event) => { }

Ereignistyp

Ein PromiseRejectionEvent. Erbt von Event.

Event PromiseRejectionEvent

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.

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

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

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