我有一个从改造中生成的观察值,我正在尝试为其实现错误处理,特别是连接超时。出错的订阅者会被调用,但应用程序仍然会崩溃,并出现sockettimeout错误。有什么建议吗?
Observable<History> history = api.returnHistoryRX(pair, String.valueOf(unixTime-3600), String.valueOf(unixTime));
history.onErrorReturn(throwable -> null);
订阅者
public void getPriceNow(Observable<List<history>> history, String pair) {
Timestamp timestamp2;
timestamp2 = new Timestamp(System.currentTimeMillis());
history.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(history1 -> {
String currentValue;
if (history1.size()>0){
System.out.println("testing rx");
}
}, e->System.out.println("getPriceNow: error called"));
}
为了测试,我使用okhttp将超时设置为不合理的低值
private OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.MILLISECONDS)
.readTimeout(30L, TimeUnit.MILLISECONDS)
.writeTimeout(100L, TimeUnit.MILLISECONDS);
错误链如下所示:
java.lang.IllegalStateException:在Scheduler.Worker线程上引发异常。添加onError
处理。
原因: rx.exceptions.OnErrorNotImplementedException:连接失败
原因: java.net.SocketTimeoutException:连接失败
发布于 2018-08-15 21:31:00
添加.onExceptionResumeNext {
论观察者
发布于 2021-05-14 21:43:07
尝试设置gloable错误处理程序
//如果支持Java 8 lambda,则为RxJavaPlugins.setErrorHandler(e -> { });
//如果没有Retrolambda或者Jack RxJavaPlugins.setErrorHandler(Functions.emptyConsumer());
https://stackoverflow.com/questions/41403424
复制相似问题