【问题标题】:Marking an 'unhandled' web worker exception as handled将“未处理”的 Web Worker 异常标记为已处理
【发布时间】:2023-03-25 12:35:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript exception-handling web-worker


    【解决方案1】:

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

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

    【讨论】:

    • 伙计,有了这个答案,你做了 2 件事:1. 让我的最后 3 天完全没有生产力 2. 你又为我节省了 X 天的无效率搜索错误泄漏的地方谢谢!
    猜你喜欢
    • 2015-11-03
    • 2015-01-26
    • 1970-01-01
    • 2015-01-17
    • 2017-04-21
    • 1970-01-01
    • 2011-11-19
    • 1970-01-01
    相关资源
    最近更新 更多