WorkerGlobalScope: unhandledrejection Ereignis

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2020.

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

Das unhandledrejection Ereignis wird an den globalen Gültigkeitsbereich (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 Ereignis-Handler-Eigenschaft.

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

onunhandledrejection = (event) => { }

Ereignistyp

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 er an Promise.reject() übergeben wurde.

Beispiele

Grundlegendes Fehlerprotokoll

Dieses Beispiel protokolliert Informationen über die nicht behandelte Promise-Ablehnung in die 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 Ereignislistener 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 verhindern, dass dies geschieht, indem Sie einen Handler für unhandledrejection Ereignisse hinzufügen, der—neben anderen Aufgaben, die Sie ausführen möchten—preventDefault() aufruft, um das Ereignis abzubrechen und zu verhindern, dass es an den Protokollierungscode der Laufzeitumgebung 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

Specification
HTML
# handler-workerglobalscope-onunhandledrejection

Browser-Kompatibilität

Siehe auch