You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift withThrowingTaskGroup出现try表达式无抛出函数调用警告问题

警告触发原因

withThrowingTaskGroup 不会自动捕获子任务的错误向外抛出,你仅向任务组中添加了会抛出错误的子任务,但没有在闭包内执行任何可抛出错误的操作(比如等待子任务执行、获取子任务返回值),因此整个闭包没有抛出错误的可能,开头的try关键字也就没有作用,触发警告。

错误向外传播的实现方式

你需要在任务组闭包内主动等待子任务执行,只要子任务抛出错误,等待操作就会触发错误抛出,进而传递给f1的调用方。常见的等待操作有两种:

  • 调用group.waitForAll():等待所有子任务执行完成,任意子任务抛出错误都会直接向上抛出
  • 遍历group调用next()获取每个子任务的返回值,取值过程中子任务的错误会被抛出

修正后代码示例

func f1() async throws {
    try await withThrowingTaskGroup(of: Int.self) { group in
        group.addTask(priority: .high) {
            throw NSError(domain: "custom", code: -1)
        }
        // 新增等待所有任务执行的逻辑,该调用可抛出错误,外层try生效
        try group.waitForAll()
    }
}

内容的提问来源于stack exchange,提问作者user1046037

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:06:09