考虑以下代码:
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/