GPUDevice: pushErrorScope() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

安全上下文: 此功能仅在安全上下文(HTTPS)中可用,且支持此功能的浏览器数量有限。

注意:此功能在 Web Workers 中可用。

GPUDevice 接口的 pushErrorScope() 方法会将一个新的 GPU 错误作用域推入设备的错误作用域堆栈,允许您捕获特定类型的错误。

完成错误捕获后,您可以通过调用 GPUDevice.popErrorScope() 来结束捕获。这将从堆栈中弹出该作用域,并返回一个 Promise,该 Promise 会解析为一个描述作用域中捕获的第一个错误的对象,如果没有捕获到任何错误,则解析为 null

语法

js
pushErrorScope(filter)

参数

filter

一个枚举值,指定在此特定错误作用域中将捕获哪种类型的错误。可能的值为:

"internal"

错误作用域将捕获一个 GPUInternalError

"out-of-memory"

错误作用域将捕获一个 GPUOutOfMemoryError

"validation"

错误作用域将捕获一个 GPUValidationError

返回值

无 (Undefined)。

示例

以下示例使用错误作用域来捕获疑似验证错误,并将其记录到控制台。

js
device.pushErrorScope("validation");

let sampler = device.createSampler({
  maxAnisotropy: 0, // Invalid, maxAnisotropy must be at least 1.
});

device.popErrorScope().then((error) => {
  if (error) {
    sampler = null;
    console.error(`An error occurred while creating sampler: ${error.message}`);
  }
});

有关更多示例和信息,请参阅 WebGPU 错误处理最佳实践

规范

规范
WebGPU
# dom-gpudevice-pusherrorscope

浏览器兼容性

另见