android 异常错误日志捕获,android-协程中未捕获到异常

我似乎无法在协程中完成错误处理.我一直在阅读许多文章和exception handling documentation,但似乎无法正常工作.

这是我的设置:

我的ViewModel用它的范围启动协程

class MyViewModel(private var myUseCase: MyUseCase) : ViewModel() {

private val viewModelJob = Job()

private val uiScope = CoroutineScope(Dispatchers.Main + viewModelJob)

fun doSomething() {

uiScope.launch {

try {

myUseCase()

} catch (exception: Exception) {

// Do error handling here

}

}

}

}

我的UseCase仅处理一些逻辑,在这种情况下,是某种验证器

class MyUseCase(private val myRepository: MyRepository) {

suspend operator fun invoke() {

if (checker()) {

throw CustomException("Checker Failed due to: ...")

}

myRepository.doSomething()

}

}

然后我的存储库只处理网络层/本地层

object MyRepository {

private val api = ... // Retrofit

suspend fun doSomething() = api.doSomething()

}

这是我的改造界面

interface MyInterface {

@POST

suspend fun doSomething()

}

ViewModel的try / catch可以处理Retrofit调用中的错误,但是无法捕获UseCase抛出的CustomException中的错误.从我一直阅读的文章来看,这应该可行.如果我使用异步,则可以等待并消耗该错误,但是在这种情况下,我不必使用异步,因此我一直在解决这个问题.我可能会迷路.

任何帮助将不胜感激!提前致谢!

编辑:

这是我得到的错误日志:

com.example.myapp.domain.errors.CustomException

at com.example.myapp.domain.FeatureOne$invoke$2.invokeSuspend(FeatureOne.kt:34)

at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)

at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:238)

at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)

at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)

at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:742)

该错误直接指向显式throw语句.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值