Kotlin协程withContext异常无法被try-catch捕获问题排查
问题:网络请求抛出的JsonDataException未被正确捕获?
网络请求代码
viewModelScope.launch { try { val data = withContext(dispatcher.io()) { homeRepository.getData() } } catch (e: Throwable) { val error = globalErrorHandler.getMessageForUser(throwable) Timber.d("seriesResponse failed: $error") } }
响应模型定义
data class MainResponse<T>( val list: List<T> = emptyList(), val total: Int? )
抛出的错误信息
Fatal Exception: com.squareup.moshi.JsonDataException Non-null value 'credits' was null at $.data[1].credits
我原本认为这个JsonDataException会被try-catch块捕获,但实际直接触发了致命异常。请问代码哪里出问题了?
更新说明:经排查是我自身问题,val error = globalErrorHandler.getMessageForUser(throwable)这行代码未正确处理(比如内部又抛出了未捕获的异常),导致错误没有被正常拦截。
内容的提问来源于stack exchange,提问作者Frank Mung No
相关产品推荐
相关产品推荐

