将 'unhandled' 网络工作者异常标记为已处理

Marking an 'unhandled' web worker exception as handled

我正在尝试测试一些使用网络工作者的代码。我想检查错误路径是否有效;即,onError 处理程序正确地从 web worker 抛出的异常中恢复。

我 运行 遇到的问题是从 Web Worker 传播出去的异常导致它被视为未处理。例如,它在浏览器的控制台日志中打印并导致我的测试环境(一个简单的 Karma 包装器)认为测试失败。

那么,我如何向 browser/Karma 表明从给定 Web Worker 中冒出的异常是预期的,不应被视为未处理? 我不知道'希望它打印到控制台,我希望我的测试通过。

我想到的唯一想法是将 web worker 代码包装在 try/catch 中并通过 postMessage 编组捕获的异常,但这需要丢弃很多信息,因为需要将错误对象字符串化(否则 triggers a data clone error)。

对提供给 onError 处理程序的错误事件对象调用 preventDefault

worker.onError = function(e) {
    e.preventDefault(); // <-- "Hey browser, I handled it!"
    ...
}