java - 出现错误时如何继续处理项目?

标签 java rx-java rx-java2

考虑以下代码:

    Collection<String> foos = Arrays.asList("1", "2", "3", "X", "5", "6", "7", "8", "9", "10");

    Flowable<Integer> integerFlowable = Flowable.fromIterable(foos).map(s -> Integer.parseInt(s)).onErrorReturnItem(-1);

    PublishProcessor<Integer> processor = PublishProcessor.create();
    processor.map(i -> 2 * i).subscribe(i -> System.out.println(i), e -> System.out.println("error!"));
    integerFlowable.subscribe(processor);

到达“X”时处理结束。

我如何指示 RxJava 继续处理其余项目?

最佳答案

如果尝试将所有“无效”输入替换为给定值(例如 -1),您可以提供不同的映射器函数。

Flowable<Integer> integerFlowable = Flowable.fromIterable(foos)
    .map(s -> {
        try {
            return Integer.parseInt(s);
        } catch (NumberFormatException e) {
            return -1;
        }
    });

您还可以在创建 Flowable 之前删除所有“无效”输入。

Collection<String> foos = Arrays.asList("1", "2", "3", "X", "5", "6", "7", "8", "9", "10");
Collection<String> numbers = foos.stream().filter(s -> {
    try {
        Integer.parseInt(s);
        return true;
    } catch (NumberFormatException e) {
        return false;
    }
}).collect(Collectors.toList());

关于java - 出现错误时如何继续处理项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55833472/

相关文章:

java - 我如何在 Seam 中插入今天的日期?

java - 向 jTree 节点添加新叶子

java - 尝试按值对链接的 HashMap <Character, Integer> 进行排序

java - Android,在代码中找到所有请求权限的地方

java - RX-java2 重复消耗 Observable

android - Mockito.verify 没有看到方法执行,即使它是

android - 使用事件总线传递 RxJava 订阅

android - 如何使用探查器查找内存泄漏

java - RX Java - 重试一些抛出异常的代码

java - 使用 rxjava 同步方法