我正在使用Retrofit来访问我的API,如下所示:
public interface UserService {
...
@POST("/user/login")
public Observable<User> register(@Body() User user);
}
Run Code Online (Sandbox Code Playgroud)
以下是我访问API的方法:
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) {
....
}
});
Run Code Online (Sandbox Code Playgroud)
这非常有效,除非有异常(即IOException或连接超时),onError方法不会被触发,而是在主线程上得到一个异常终止我的应用程序.
但是,对于某些情况(例如,当API调用以状态代码400响应时),将按预期触发onError方法.
在挖掘了logcat输出后,我发现了这一行,(不知道我应该怎么处理这个)
rx.exceptions.OnErrorFailedException:尝试将错误传播到Observer.onError时发生错误
有人能让我知道我做错了什么吗?