【发布时间】:2017-12-12 06:09:59
【问题描述】:
如何验证Observable 中的每一项并在条件失败时返回错误?
现在我使用switchMap 和if 内部,但这个解决方案看起来不是很好:
Observable.just(1, 2, 3, -1, 4)
.switchMap(x -> {
if (x >= 0) {
return Observable.just(x);
} else {
return Observable.error(new Exception("Input value should be positive"));
}
})
.subscribe(
x -> System.out.printf("value=%d\n", x),
err -> System.out.printf("error: %s\n", err.getMessage())
);
我可以使用任何内置方法来代替这个吗?
【问题讨论】:
-
不是过滤器吗?
-
@PhoenixWang
filter只是删除“坏”值,而我需要一个例外 -
1.您可以在过滤器中抛出异常,操作员将传递错误。 2. 我认为这对于反应式流来说不是很好的实现。例外意味着您不能再收听/订阅流。您最好使用 ErrorState 而不是 Exception。例如,包含您的值或异常以指示验证结果的 Result
。 @g4s8
标签: exception rx-java rx-java2