将“未处理”的 Web Worker 异常标记为已处理

Cra*_*ney 2 javascript exception web-worker

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

我遇到的问题是,从网络工作线程中传播出来的异常导致它被视为未处理。例如,它在浏览器的控制台日志中打印,并导致我的测试环境(Karma 的简单包装器)将测试视为失败。

那么,我如何向浏览器/Karma 指示给定 Web Worker 会出现异常,并且不应将其视为未处理?我不希望它打印到控制台,并且我希望我的测试通过。

我想到的唯一想法是将网络工作人员代码包装在 try/catch 中,并通过 封送捕获的异常postMessage,但这需要丢弃相当多的信息,因为需要对错误对象进行字符串化(否则它会触发数据克隆错误)。

Cra*_*ney 6

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

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