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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage