这是我的一段代码,已经在顶级try catch了,程序还是崩了,感觉捕获不了异常:
mBtn.setOnClickListener {
try {
GlobalScope.launch {
// 或者try catch 这个范围
val job = GlobalScope.launch {
launch {
throw NullPointerException()
}
}
job.join()
}
} catch (e: Exception) {
Log.e(TAG, e.message + " --- ")
}
}
反而用CoroutineExceptionHandler就可以捕获异常:
mBtn.setOnClickListener {
GlobalScope.launch {
val job = GlobalScope.launch(CoroutineExceptionHandler { coroutineContext, throwable ->
Log.e(TAG, throwable.message)
}) {
launch {
throw NullPointerException()
}
}
job.join()
}
}
我没看错的话老师你《7-6 协程的异常处理1》的18:14秒运行完的结果也是崩了的,用的也是try catch,老师能解释一下这是什么情况么?为什么用try catch还是会崩,CoroutineExceptionHandler就不会崩