withThrowingTaskGroup - 在 'try' 表达式中不调用抛出函数
withThrowingTaskGroup - No calls to throwing functions occur within 'try' expression
问题:
我有以下显示警告的函数 No calls to throwing functions occur within 'try' expression
问题:
- 为什么会显示此警告? (任务里面的代码报错)
- 我应该怎么做才能将错误传播给
f1
的调用者?
代码:
func f1() async throws {
try await withThrowingTaskGroup(of: Int.self) { group in //No calls to throwing functions occur within 'try' expression
group.addTask(priority: .high) {
throw NSError()
}
}
}
您确实没有在 withThrowingTaskGroup
闭包中调用任何抛出函数或抛出任何东西。您刚刚为小组添加了一项任务 运行。这本身不会抛出任何东西。 addTask
没有标记为 throws
,尽管它的闭包参数是。它只会在您以某种方式等待任务完成时抛出。
例如:
try await group.waitForAll()
或者如果你想遍历组中的每个任务:
for try await someInt in group {
// ...
}
如果您在 withThrowingTaskGroup
闭包中 return 某些内容,那么 withThrowingTaskGroup
也会 return。如果您在闭包中抛出错误,withThrowingTaskGroup
将抛出该错误(因为它是 rethrows
),f1
.
也会抛出该错误
问题:
我有以下显示警告的函数 No calls to throwing functions occur within 'try' expression
问题:
- 为什么会显示此警告? (任务里面的代码报错)
- 我应该怎么做才能将错误传播给
f1
的调用者?
代码:
func f1() async throws {
try await withThrowingTaskGroup(of: Int.self) { group in //No calls to throwing functions occur within 'try' expression
group.addTask(priority: .high) {
throw NSError()
}
}
}
您确实没有在 withThrowingTaskGroup
闭包中调用任何抛出函数或抛出任何东西。您刚刚为小组添加了一项任务 运行。这本身不会抛出任何东西。 addTask
没有标记为 throws
,尽管它的闭包参数是。它只会在您以某种方式等待任务完成时抛出。
例如:
try await group.waitForAll()
或者如果你想遍历组中的每个任务:
for try await someInt in group {
// ...
}
如果您在 withThrowingTaskGroup
闭包中 return 某些内容,那么 withThrowingTaskGroup
也会 return。如果您在闭包中抛出错误,withThrowingTaskGroup
将抛出该错误(因为它是 rethrows
),f1
.