The uncapturederror
event of the 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 pushErrorScope()
and popErrorScope()
.
Use the event name in methods like addEventListener()
, or set an event handler property.
addEventListener("uncapturederror", (event) => {});
onuncapturederror = (event) => {};
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) => {
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.