我無法理解這兩個功能之間的區別。為什么 func2 會導致程式崩潰,而 func1 可以捕獲例外?
fun main() {
runBlocking {
func1() //Prints exception
func2() //Program crashes
}
}
fun CoroutineScope.func1() {
launch {
try {
throw IllegalArgumentException("error")
} catch (t: Throwable) {
println(t)
}
}
}
fun CoroutineScope.func2() {
try {
launch {
throw IllegalArgumentException("error")
}
} catch (t: Throwable) {
println(t)
}
}
uj5u.com熱心網友回復:
“啟動”塊中的代碼在具有不同背景關系的單獨協程上運行。外部 try/catch 無法捕獲發生的例外。您需要將 try/catch 放在一個塊中,例如您的 func1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/411490.html
標籤:
