files/en-us/web/api/workerglobalscope/unhandledrejection_event/index.md
{{APIRef("DOM")}}{{AvailableInWorkers("worker")}}
The unhandledrejection event is sent to the global scope (typically {{domxref("WorkerGlobalScope")}}) of a script when a {{jsxref("Promise")}} that has no rejection handler is rejected.
This is useful for debugging and for providing fallback error handling for unexpected situations.
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property.
addEventListener("unhandledrejection", (event) => { })
onunhandledrejection = (event) => { }
A {{domxref("PromiseRejectionEvent")}}. Inherits from {{domxref("Event")}}.
{{InheritanceDiagram("PromiseRejectionEvent")}}
This example logs information about the unhandled promise rejection to the console.
self.addEventListener("unhandledrejection", (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
});
You can also use the onunhandledrejection event handler property to set up the event listener:
self.onunhandledrejection = (event) => {
console.warn(`UNHANDLED PROMISE REJECTION: ${event.reason}`);
};
Many environments (such as {{Glossary("Node.js")}}) report unhandled promise rejections to the console by default. You can prevent that from happening by adding a handler for unhandledrejection events that—in addition to any other tasks you wish to perform—calls {{domxref("Event.preventDefault()", "preventDefault()")}} to cancel the event, preventing it from bubbling up to be handled by the runtime's logging code. This works because unhandledrejection is cancelable.
self.addEventListener("unhandledrejection", (event) => {
// code for handling the unhandled rejection
// …
// Prevent the default handling (such as outputting the
// error to the console)
event.preventDefault();
});
{{Specifications}}
{{Compat}}