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 Bereich (typischerweise WorkerGlobalScope) eines Skripts gesendet, wenn ein Promise, das keinen Ablehnungs-Handler hat, abgelehnt wird.

Dies ist nützlich für das Debuggen und um eine Fehlerbehandlung für unerwartete Situationen bereitzustellen.

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

Beispiele

Grundlegendes Fehlerprotokoll

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

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

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

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

Verhindern der Standardbehandlung

Viele Umgebungen (wie Node.js) melden standardmäßig unbehandelte Promise-Ablehnungen 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, um das Ereignis abzubrechen. Dadurch wird verhindert, dass es an die Protokollierungscode der Laufzeit weitergeleitet wird. Dies funktioniert, weil unhandledrejection abbruchfähig 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