2 回答
TA贡献1816条经验 获得超4个赞
如果尝试用给定值(例如 -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());
TA贡献1783条经验 获得超4个赞
通常,调用层次结构中的上层方法应该以有用的方式处理异常(不仅仅是捕获)。通常这意味着向用户显示有用的错误消息。
对于您的用例,检查字符串是否为数字就足够了:
if (s.matches("-?\\d+")) { Integer.parseInt(s) }
这是一个基本示例,可能不会涵盖您的所有用例(例如前导零或溢出之类的东西)。
添加回答
举报