Observable 验证每个项目

Observable validate each item

如果条件失败,如何验证 Observable 和 return 中的每一项错误?
现在我在里面使用 switchMapif,但是这个解决方案看起来不太好:

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())
    );

我可以使用任何内置方法代替这个吗?

您可以使用 doOnNext() 来抛出异常。

Observable.just(1, 2, 3, -1, 4)
        .doOnNext(x -> {
            if (x < 0) throw Exception("Input value should be positive");
        })
        .subscribe(
            x -> System.out.printf("value=%d\n", x),
            err -> System.out.printf("error: %s\n", err.message)
        );