java - 如何让流报告错误并下一步

标签 java android rx-java2

我有一个总是报告 onNext 的流。 我想检查该对象并决定是在 onNext 中发送还是在 onError 中发送。

我应该创建自己的 Throwable 类来保存这个对象并将这个 Throwable 扔到 map 操作符中吗?或者有什么更好的办法吗?

最佳答案

正如您所建议的,您可以抛出异常并让map()捕获异常并重定向到onError()。当错误可能发生在映射代码深处时,这非常有用。

另一种不需要throw的方法是使用flatMap():

...
.flatMap( input -> {
                     if ( input.isValid() ) {
                       return Observable.just( mapValue( input ) );
                     }
                     return Observable.error( new MyThrowable( input ) );
                   } )
...

在我看来,不连续性较少,因为您知道您在顶层的选择之一就是遇到错误。

关于java - 如何让流报告错误并下一步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002982/

相关文章:

java - 如何检查用户输入是否是字符串

java - Java中如何返回类的实例名称

android - setAndAllowWhileIdle 和 setExactAndAllowWhileIdle 的区别

android - sqlite更新一个元组

java - Android:Java 与 Python

rx-java - RxJava2 阻塞可观察超时 : How do I emit a result when timeout fires?

java - rx-java2 flatMap 中的空处理

java - 为什么可以使用方法将字符串元素添加到整数ArrayList

java - 使用java AWT确定标题的大小

java - 使用 RxJava2 正确处理背压和并发