Rxjava 处理异常

「已注销」 2016-11-05 08:30:05
public Observable<Weather> fetchWeather(final String city) {
return apiService.mWeatherAPI(city, C.HEFENG_KEY)
.subscribeOn(Schedulers.io())
.unsubscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<WeatherAPI, Observable<WeatherAPI>>() {
@Override
public Observable<WeatherAPI> call(WeatherAPI weatherAPI) {
String status = weatherAPI.mHeWeatherDataService30s.get(0).status;
//出错
if ("no more requests".equals(status)) {
return Observable.error(new ApiException(100));
} else if ("unknown city".equals(status)) {
return Observable.error(new ApiException(101));
}
return Observable.just(weatherAPI);
}
})
.map(new Func1<WeatherAPI, Weather>() {
@Override
public Weather call(WeatherAPI weatherAPI) {
return weatherAPI.mHeWeatherDataService30s.get(0);
}
});
}

api次数用完后 return Observable.error(new ApiException(100)); 程序闪退是什么原因?



...全文
261 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_36700829 2018-11-11
  • 打赏
  • 举报
回复
老铁,你的这个问题怎么解决的,我也遇到类似的问题
java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling.
at rx.a.b.d.run(Unknown Source:16)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:101)
at android.os.Looper.loop(Looper.java:166)
at android.app.ActivityThread.main(ActivityThread.java:7425)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:245)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:921)
Caused by: rx.b.j
at rx.internal.util.c.a(Unknown Source:2)
at rx.internal.util.c.call(Unknown Source:2)
at rx.internal.util.a.onError(Unknown Source:2)
at rx.d.a.a(Unknown Source:16)
at rx.d.a.onError(Unknown Source:10)
at rx.internal.a.ac.a(Unknown Source:51)
at rx.internal.a.ac.call(Unknown Source:30)
at rx.a.b.d.run(Unknown Source:2)
... 7 more
Caused by: rx.b.g
at rx.internal.a.ac.onNext(Unknown Source:25)
at rx.internal.a.p.call(Unknown Source:13)
at rx.r.call(Unknown Source:4)
at rx.internal.c.k.call(Unknown Source:11)
at rx.internal.c.s.run(Unknown Source:9)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:457)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:301)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636)
at java.lang.Thread.run(Thread.java:784)
「已注销」 2016-11-06
  • 打赏
  • 举报
回复
谢谢,我在service更新时,的确略掉OnError了。
  • 打赏
  • 举报
回复
没有实现 处理这个错误的方法。
「已注销」 2016-11-05
  • 打赏
  • 举报
回复
11-05 20:04:28.112 30276-30276/com.guofeng.weather E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IllegalStateException: Exception thrown on Scheduler.Worker thread. Add `onError` handling. at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:112) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:176) at android.app.ActivityThread.main(ActivityThread.java:5493) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041) at dalvik.system.NativeStart.main(Native Method) Caused by: rx.exceptions.OnErrorNotImplementedException: Sorry! 今日API免费次数用完啦,感谢支持 at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:386) at rx.internal.util.InternalObservableUtils$ErrorNotImplementedAction.call(InternalObservableUtils.java:383) at rx.internal.util.ActionSubscriber.onError(ActionSubscriber.java:44) at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:153) at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:115) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onError(OnSubscribeMap.java:88) at rx.internal.operators.OperatorMerge$MergeSubscriber.reportError(OperatorMerge.java:266) at rx.internal.operators.OperatorMerge$MergeSubscriber.checkTerminate(OperatorMerge.java:818) at rx.internal.operators.OperatorMerge$MergeSubscriber.emitLoop(OperatorMerge.java:579) at rx.internal.operators.OperatorMerge$MergeSubscriber.emit(OperatorMerge.java:568) at rx.internal.operators.OperatorMerge$InnerSubscriber.onError(OperatorMerge.java:852) at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:44) at rx.internal.operators.OnSubscribeThrow.call(OnSubscribeThrow.java:28) at rx.Observable.unsafeSubscribe(Observable.java:10200) at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:248) at rx.internal.operators.OperatorMerge$MergeSubscriber.onNext(OperatorMerge.java:148) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:77) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:224) at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107) at android.os.Handler.handleCallback(Handler.java:730)  at android.os.Handler.dispatchMessage(Handler.java:92)  at android.os.Looper.loop(Looper.java:176)  at android.app.ActivityThread.main(ActivityThread.java:5493)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:525)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)  at dalvik.system.NativeStart.main(Native Method)  Caused by: com.guofeng.weather.util.ApiException: Sorry! 今日API免费次数用完啦,感谢支持 at com.guofeng.weather.util.RetrofitSingleton$3.call(RetrofitSingleton.java:128) at com.guofeng.weather.util.RetrofitSingleton$3.call(RetrofitSingleton.java:121) at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69) at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber.call(OperatorObserveOn.java:224)  at rx.android.schedulers.LooperScheduler$ScheduledAction.run(LooperScheduler.java:107)  at android.os.Handler.handleCallback(Handler.java:730)  at android.os.Handler.dispatchMessage(Handler.java:92)  at android.os.Looper.loop(Looper.java:176)  at android.app.ActivityThread.main(ActivityThread.java:5493)  at java.lang.reflect.Method.invokeNative(Native Method)  at java.lang.reflect.Method.invoke(Method.java:525)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1225)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1041)  at dalvik.system.NativeStart.main(Native Method) 

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧