bounty还有6天到期。回答此问题可获得+300声望奖励。stefan.at.wpf希望引起更多关注此问题。
这段代码--没有监视的手动查询执行--正如我所期望的那样抛出了一个异常(由于故意错误的服务器URL,这里没有显示):
try {
val response = apolloClient.query(MyQuery()).execute()
} catch (e: Exception) {
Timber.e("exception from manual execution")
Timber.e(e)
}
然而,如果我像下面的代码一样使用watch(并故意使用相同的错误服务器url),我不会得到任何异常:
try {
apolloClient.query(MyQuery())
.watch() // flow
.collect { response ->
Timber.i("apollo watch collect called")
}
} catch (e: Exception) {
Timber.e("exception from watch execution")
Timber.e(e)
}
我的错误在哪里?为什么我在第二种情况下没有得到异常?如何在使用watch时捕获错误?
1条答案
按热度按时间w6mmgewl1#
在
ApolloQueryWatcher
示例上使用回调。下面是GitHub上的一个示例还可以在任何
enqueueAndWatch
调用中使用.responseFetcher(ApolloResponseFetchers.CACHE_ONLY)
,以确保在更新该高速缓存时观察程序不会执行任何网络请求,并防止Infinite loops