Thanks to visit codestin.com
Credit goes to developer.mozilla.org

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 keinen Ablehnungs-Handler 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 einer Fallback-Fehlerbehandlung für unerwartete Situationen.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Ereignis-Handler-Eigenschaft.

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

onunhandledrejection = (event) => { }

Ereignistyp

Ein PromiseRejectionEvent. Erbt von Event.

Event PromiseRejectionEvent

Ereigniseigenschaften

PromiseRejectionEvent.promise Schreibgeschützt

Das JavaScript-Promise, das abgelehnt wurde.

PromiseRejectionEvent.reason Schreibgeschützt

Ein Wert oder Object, der angibt, warum das Promise abgelehnt wurde, wie bei Promise.reject() übergeben.

Ereignis-Handler-Alias

Zusätzlich zur Window-Schnittstelle ist die Ereignis-Handler-Eigenschaft onunhandledrejection auch auf den folgenden Zielen verfügbar:

Verwendungshinweise

Wenn das unhandledrejection-Ereignis zugelassen wird zu "bubblen", wird letztendlich eine Fehlermeldung an die Konsole ausgegeben. 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 leakt, werden Promise-Ablehnungen, die von einem Skript aus einer anderen Herkunft stammen, dieses Ereignis nicht auslösen.

Beispiele

Einfaches Fehlerprotokollieren

Dieses Beispiel protokolliert Informationen über die nicht behandelte Promise-Zurückweisung in der Konsole.

js
window.addEventListener("unhandledrejection", (event) => {
  console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});

Sie können auch die Ereignis-Handler-Eigenschaft onunhandledrejection verwenden, um den Ereignis-Listener einzurichten:

js
window.onunhandledrejection = (event) => {
  console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};

Verhinderung der Standardbehandlung

Viele Umgebungen (wie Node.js) melden nicht behandelte Promise-Zurückweisungen standardmäßig an die 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() aufruft, um das Ereignis zu stornieren, und zu verhindern, dass es nach oben "bubbelt" und durch den Logging-Code der Laufzeit behandelt wird. Dies funktioniert, weil unhandledrejection abbrechbar ist.

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

Specification
HTML
# event-unhandledrejection
HTML
# handler-window-onunhandledrejection

Browser-Kompatibilität

Siehe auch