【发布时间】:2020-10-08 11:46:39
【问题描述】:
我一直在阅读有关使用协程处理异常的文章,但我还不清楚一些事情。
-
CancellationException 何时发生?我是否必须将协程分配给作业,然后调用 job.cancel() 才能发生?
-
看看我的代码,它会被抓住吗?还是第一个catch块没用?
fun invoke(params: Params, onResult: (UseCaseResponse<Type>)?) {
CoroutineScope(Dispatchers.Main).launch {
try {
val result = run(params)
onResult?.onSuccess(result)
Log.d(TAG, "Response: $result")
} catch (e: CancellationException) {
Log.d(TAG, "Error: $e")
onResult?.onError(apiErrorHandler.traceErrorException(e))
} catch (e: Exception) {
Log.d(TAG, "Error: $e cause: ${e.cause}")
onResult?.onError(apiErrorHandler.traceErrorException(e))
}
}
}
【问题讨论】:
标签: kotlin kotlin-coroutines coroutine