files/en-us/web/api/gpudevice/uncapturederror_event/index.md
{{APIRef("WebGPU API")}}{{SecureContext_Header}}{{AvailableInWorkers}}
The uncapturederror event of the {{domxref("GPUDevice")}} interface is fired when an error is thrown that has not been observed by a GPU error scope, to provide a way to report unexpected errors.
Known error cases should be handled using {{domxref("GPUDevice.pushErrorScope", "pushErrorScope()")}} and {{domxref("GPUDevice.popErrorScope", "popErrorScope()")}}.
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property.
addEventListener("uncapturederror", (event) => { })
onuncapturederror = (event) => { }
A {{domxref("GPUUncapturedErrorEvent")}}. Inherits from {{domxref("Event")}}.
{{InheritanceDiagram("GPUUncapturedErrorEvent")}}
You could use something like the following as a global mechanism to pick up any errors that aren't handled by error scopes and capture them.
device.addEventListener("uncapturederror", (event) => {
// Re-surface the error.
console.error("A WebGPU error was not captured:", event.error);
reportErrorToServer({
type: event.error.constructor.name,
message: event.error.message,
});
});
See WebGPU Error Handling best practices for more examples and information.
{{Specifications}}
{{Compat}}