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

View in English Always switch to English

WorkerGlobalScope: unhandledrejection Ereignis

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2020 browserübergreifend verfügbar.

Hinweis: Diese Funktion ist nur in Web Workers verfügbar.

Das unhandledrejection Ereignis wird an den globalen Geltungsbereich (typischerweise WorkerGlobalScope) eines Skripts gesendet, wenn ein Promise abgelehnt wird, das keinen Ablehnungshandler hat.

Dies ist nützlich zum Debuggen und für die Bereitstellung einer Fehlerbehandlung für unerwartete Situationen.

Syntax

Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder legen Sie eine Ereignishandler-Eigenschaft fest.

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

onunhandledrejection = (event) => { }

Ereignistyp

Ein PromiseRejectionEvent. Erbt von Event.

Event PromiseRejectionEvent

Beispiele

Grundlegende Fehlerprotokollierung

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

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

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

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

Standardbehandlung verhindern

Viele Umgebungen (wie Node.js) melden nicht behandelte 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 allen anderen Aufgaben, die Sie ausführen möchten – preventDefault() aufruft, um das Ereignis abzubrechen und zu verhindern, dass es an den Logging-Code der Laufzeit weitergeleitet wird. Dies funktioniert, weil unhandledrejection abbrechbar ist.

js
self.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
# handler-workerglobalscope-onunhandledrejection

Browser-Kompatibilität

Siehe auch