这种设置有可能吗?
scopeA.launch {
try {
scopeB.launch {
throw SomeException()
}
} catch (e: SomeException) {
// Want to catch here
}
}
最佳答案
您似乎希望矛盾的事情:启动并发协程并暂停当前工作直到完成,以捕获可能的异常。您必须确定您实际想要的是:
scopeA.launch {
launch(dispatcherB) {
try {
throw SomeException()
} catch (e: SomeException) {
// handle
}
}
}
launch
编码,而应使用withContext(dispatcherB)
代替:scopeA.launch {
try {
withContext(dispatcherB) {
throw SomeException()
}
} catch (e: SomeException) {
// handle
}
}
Channel<SomeException>
或Flow<SomeException>
。