首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >捕获socketTimeoutException时出现rxJava错误

捕获socketTimeoutException时出现rxJava错误
EN

Stack Overflow用户
提问于 2016-12-31 06:23:24
回答 2查看 2.8K关注 0票数 2

我有一个从改造中生成的观察值,我正在尝试为其实现错误处理,特别是连接超时。出错的订阅者会被调用,但应用程序仍然会崩溃,并出现sockettimeout错误。有什么建议吗?

代码语言:javascript
复制
Observable<History> history = api.returnHistoryRX(pair, String.valueOf(unixTime-3600), String.valueOf(unixTime));

history.onErrorReturn(throwable -> null);

订阅者

代码语言:javascript
复制
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将超时设置为不合理的低值

代码语言:javascript
复制
    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:连接失败

EN

回答 2

Stack Overflow用户

发布于 2018-08-15 21:31:00

添加.onExceptionResumeNext {

论观察者

票数 0
EN

Stack Overflow用户

发布于 2021-05-14 21:43:07

尝试设置gloable错误处理程序

//如果支持Java 8 lambda,则为RxJavaPlugins.setErrorHandler(e -> { });

//如果没有Retrolambda或者Jack RxJavaPlugins.setErrorHandler(Functions.emptyConsumer());

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41403424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档