catch(e:Exception)为什么捕获不到 ,2,顶层无论加不加supervisorScope 都不打印println("1 Exception")

来源:7-8 协程的异常处理2

steaywengwu

2020-12-04

//try catch
suspend fun myExceptionPath() {
try {
GlobalScope.launch(
CoroutineExceptionHandler { contex, throwable ->
println(“1 Exception”)
})
{
supervisorScope {
val job = GlobalScope.launch(
/CoroutineExceptionHandler { contex, throwable ->
println(“2 Exception”)
}
/
)
{
println("=======2")
throw NullPointerException(“eeeeeeeee”)
}
job.join()

            }

    }.join()

} catch (e: Exception) {
    println("ex=============")
   // println(e)
}
println("======")

}

写回答

1回答

bennyhuo

2020-12-04

supervisorScope {
val job = GlobalScope.launch(

GlobalScope 会直接无视你前面的 superviseScope,不管在哪儿写的 GlobalScope.launch,都是启动顶级协程。

---

另外建议注意下代码排版,不然就算我想帮你解决问题,也得费老大劲才能看清楚你的缩进。。。

0
0

Android首选开发语言Kotlin入门与进阶

Google I/O大会钦定Android一级开发语言,现在不学,等待何时

3122 学习 · 387 问题

查看课程