Observer.onError wird inkonsistent ausgelöst
Ich benutze Retrofit, um wie folgt auf meine API zuzugreifen:
public interface UserService {
...
@POST("/user/login")
public Observable<User> register(@Body() User user);
}
So greife ich auf meine API zu:
mUserService.register(user)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<User>() {
@Override
public void onCompleted() {
....
}
@Override
public void onError(Throwable e) {
....
}
@Override
public void onNext(User user) {
....
}
});
Dies funktioniert einwandfrei, es sei denn, es liegt eine Ausnahme vor (d. H. IOException oder Timeout der Verbindung), die onError-Methode wird nicht ausgelöst, stattdessen wird im Hauptthread eine Ausnahme angezeigt, die meine Anwendung beendet.
In einigen Fällen (z. B. wenn der API-Aufruf mit dem Statuscode 400 antwortet) wird die onError-Methode jedoch wie erwartet ausgelöst.
Nach dem Durchsuchen der Logcat-Ausgabe habe ich diese Zeile entdeckt (ich bin mir nicht sicher, wie ich damit umgehen soll).
rx.exceptions.OnErrorFailedException: Beim Versuch, einen Fehler an Observer.onError weiterzugeben, ist ein Fehler aufgetreten
Kann mir jemand mitteilen, wo ich etwas falsch mache?