我正在学习RxJava,并且在很多地方看到可以通过这种方式处理错误:
repository.getById(10).subscribe(new Action1<User>() {
@Override
public void call(User user) {
//Do something
}
}, new Action1<Throwable>() {
@Override
public void call(Throwable t) {
if (t instanceof FirstErrorException) {
handleFirstError((FirstErrorException) t);
} else if (t instanceof FirstErrorException) {
handleSecondError((SecondErrorException) t);
} else {
//and so on...
}
}
});
我是唯一认为这确实是错误代码的人吗?我该如何做得更好?我虽然使用Visitor
了“访问”我的基本异常的每种具体类型的模式,但是onError
方法始终需要一个Action1<Throwable>
;。您不能使用自己的基本异常Throwable
。
错误处理程序:
<T,E extends Throwable> Observable<T>
whenExceptionIs(Class<E> what, Func1<E,Observable<T>> result) {
return t -> {
return what.isInstance(t) ? result.call(t) : Observable.error(t);
};
}
您可以这样使用:
Observable<Foo> obs = ...
.onErrorResumeNext(whenExceptionIs(IllegalArgumentException.class, t-> Observable.just(Foo.newInstance())))
.onErrorResumeNext(whenExceptionIs(IOException.class, t-> Observable.error(new XyzzyException("",t))))
....
我有一些简单的枚举名:失败/成功的结果 我有一个函数,它什么也没有得到,但返回未来的结果, 我不喜欢我的解决方案,它看起来很凌乱,有更简单的吗? 返回 我想在这里做的是,如果返回None,那么func应该返回Future[Fail],否则调用db,这也返回一个case类的未来,并基于响应返回Fail/Success。 但我正在寻找一种超级时尚的斯卡拉方式,让它看起来不错:) 谢谢
我正在使用较新的RX java,而不是 如果一切正常的话,这段代码几乎可以完美地工作。但如果我故意犯了个错误,比如我关掉了WiFi。而不是改型获得“UnknownHostException”...因为它应该发生在try catch块中的reverfit调用(getUser)中。但它没有将错误处理到onError(Throwable t)-->(我可以处理的地方),而是使应用程序崩溃。这就像错误从未
我正在尝试在MVVM中实现一个ViewModel,提供可观察的东西作为“输入流”,提供观察者作为“输出流”供视图绑定。
在我的应用程序中,有几个组件将生成各种不同类型的特定于应用程序的事件。这些事件将发布到代理并传递给N个客户端。其中一些客户端是我的服务器端应用程序中的其他Java类,但主要消费者是我的基于javascript的WebUI。 到目前为止,我目前的方法是定义一个抽象事件基类来封装一些公共字段,然后为每个事件实现一个特定的事件类。 这一直工作正常,只是现在我需要在javascript和java端维护事件
问题内容: 我有一个带有参数的方法,该参数可以为NULL。我想将输入的本地副本作为结束。现在,我的代码如下所示: 有没有更清洁的方法可以做到这一点?如果是一个简单的参数,我可以做类似的事情,但是我不确定是否有类似处理集合的事情。 问题答案: 我不明白为什么您不能使用: 您可以使用静态导入保存某些类型的输入,如果您要这样做的话:
嗨,我是RxJava和Kotlin的新手,我对它有一些概念。 我知道错误是很明显的。所以我知道缺少了什么,但我不知道的是如何处理这个错误。 我尝试添加:,但仍显示相同的错误消息。