gpt4 book ai didi

android - 从 PagingSource 的 LoadResult.Error 中提取 Throwable

转载 作者:行者123 更新时间:2023-12-05 00:15:17 25 4
gpt4 key购买 nike

我的 PagingSource 加载一些数据。文档建议像这样捕获异常,以便将来处理 LoadResult.Error

 override suspend fun load(params: LoadParams<Int>): LoadResult<Int, Item> {
return try {
...
throw SomeCatchableException()
...
} catch (e: SomeCatchableException) {
LoadResult.Error(e)
} catch (e: AnotherCatchableException) {
LoadResult.Error(e)
}
}

但是当我尝试这样处理时:

(adapter as PagingDataAdapter).loadStateFlow.collectLatest { loadState ->

when (loadState.refresh) {
is LoadState.Loading -> {
// *do something in UI*
}
is LoadState.Error -> {
// *here i wanna do something different actions, whichever exception type*
}
}
}

我想知道哪个 Exteption 会被捕获,因为我在参数 LoadResult.Error(e) 中传递了它 (Throwable)

如何知道loadState处理异常的类型?

最佳答案

在 LoadState.Error 情况下,您可以从 loadState.refresh 捕获错误,您只是错过了将 loadState.refresh 强制转换为 LoadState.Error。或者试试这样:

when (val currentState = loadState.refresh) {
is LoadState.Loading -> {
...
}
is LoadState.Error -> {
val extractedException = currentState.error // SomeCatchableException
...
}
}

关于android - 从 PagingSource 的 LoadResult.Error 中提取 Throwable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67907903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com