kotlin协程版本:1.3.0
一、Job是CoroutneContext的子类,那么能用于在 CoroutineExceptionHandler 当中判断异常属于异常哪个Job的吗?
CoroutineContext == Job 这种判断方式不行
CoroutineContext[Key] == Job[Key] 也不可行
可行办法
CoroutineContext[Key] == MyCoroutineContext
var job :Job? = null
val context = MyContext(MyKey.First)
val exceptionHandler = CoroutineExceptionHandler { c, e ->
if (c[MyKey.First]==context){
Log.e("exceptionHandler","c == context")
}else{
Log.e("exceptionHandler","c != context")
}
}
job = GlobalScope.launch(context+exceptionHandler) {
throw Exception()
}
输出:exceptionHandler: c == context
二、launch子协程直接设置CoroutineExceptionHandler,该CoroutineExceptionHandler并不能捕获异常
三、launch子协程设置的CoroutineContext在父协程的CoroutineExceptionHandler当中不能通过CoroutineContext.get(Key)得到