如何在 Worker 中捕获 DataCloneError?

How to catch DataCloneError in Worker?

我有一个 HTML5 工人用 postMessage 发送值。有时(例如,如果结果是一个函数)代码会抛出异常:

DataCloneError: The object could not be cloned.

所以我试图捕捉异常:

try {
  self.postMessage (result);
}
catch (ex) {
  if (ex instanceof DataCloneError)
    self.postMessage (result.toString());
  else
    throw ex;
}

但这会引发以下异常:

ReferenceError: DataCloneError is not defined

我很困惑。如何赶上DataCloneError?

您收到的错误是 DOMException 接口的一个实例。

要知道它是哪个DOMException,你可以检查它name 属性。
DATA_CLONE_ERROR中的一个是"DataCloneError".

try {
  postMessage( () => {} , '*' );
}
catch( err ) {
  console.log( err.name === "DataCloneError" );
}