Мы используем RxAndroid + retrofit для наших вызовов api.RxAndroid - как бросить фатальные исключения после onCompleted()
Я понимаю, почему любые исключения в последовательности пройдут Throwable through onError().
Но как вы заканчиваете последовательность, как вы затем обрабатываете ответ и возвращаетесь к повторным роковым исключениям? Я бы ожидал, что обработка в onCompleted() позволит это, но я все еще вижу, как вызывается onError().
Упрощенный фрагмент ниже. Дает результат -
throwable: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference
Observable<ResponseModel> observable = getApiCallObservable();
AppObservable.bindFragment(this, observable)
.subscribeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseModel>() {
@Override
public void onCompleted() {
uninitializedList.add("item");
}
@Override
public void onError(Throwable e) {
Log.e(TAG, "throwable: " + e.getMessage());
}
@Override
public void onNext(ResponseModel response) {
}
});
спасибо за любую помощь
Пробовал переходить к onComplete, снова onError получает вызовы с npe. В основном, я хочу, чтобы приложение вылетало, когда произошло исключение. Например, если я получаю ответ api для сохранения в db. Я не хочу, чтобы Rx обрабатывал исключения db или любые другие сбои на этом пути. Я хочу, чтобы Rx содержался только для вызовов api. –
onNext() i mean –
переместите свой код в onNext, как я уже сказал. используйте subscribeOn (Schedulers.io) и observOn (AndroidSchedulers.newThread). Он должен исправить проблему, я думаю –