我正在尝试在 MVVM 中实现 ViewModel,将可观察对象作为“输入流”提供,将观察者作为“输出流”提供以供视图绑定。
如果 getUser() 调用成功,下面的代码似乎可以工作,但如果失败则抛出未捕获的异常:
public class ViewModel {
private final BehaviorSubject<String> query;
private final BehaviorSubject<User> result;
public ViewModel() {
result = BehaviorSubject.create();
query = BehaviorSubject.create();
query.flatMap(s -> getUser(s)).subscribe(result);
// result = result.doOnError(e -> onError(e)); // does not work
}
Observable<String> login() {
return result.map(user -> user.getLogin());
}
Observable<String> blog() {
return result.map(user -> user.getBlog());
}
public Observer<String> queryObserver() {
return query;
}
private void onError(Throwable e) {
Log.e(TAG, e.getMessage());
}
}
如何在发生错误的情况下执行 onError() 方法,而不将任何内容推送到登录和博客可观察对象?