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

瀏覽器相容性

另見