У меня есть наблюдаемый сгенерированный от переоснащения, который я пытаюсь реализовать для обработки ошибок, в частности, для тайм-аутов соединения. Абоненты с ошибкой вызываются просто отлично, но приложение по-прежнему падает с ошибкой сокета. Любой совет?rxJava ошибка catching socketTimeoutException
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: не удалось подключиться
Это на 100% правильное. Я действительно обнаружил, что авария не произошла из-за этих вызовов, но в другом месте приложения, совершающего одни и те же звонки. После того, как я удалил бит, вызвавший крах, у меня все еще была проблема с отключением onErrorReturn и исправлением этого обновления. Без этого я, вероятно, смотрел бы на один и тот же бит в течение нескольких часов, поэтому спасибо тонну !! – massphoenix