2 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果嘗試用給定值(例如 -1)替換所有“無效”輸入,您可以提供不同的映射器函數(shù)。
Flowable<Integer> integerFlowable = Flowable.fromIterable(foos)
.map(s -> {
try {
return Integer.parseInt(s);
} catch (NumberFormatException e) {
return -1;
}
});
您還可以在創(chuàng)建 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貢獻(xiàn)1783條經(jīng)驗(yàn) 獲得超4個(gè)贊
通常,調(diào)用層次結(jié)構(gòu)中的上層方法應(yīng)該以有用的方式處理異常(不僅僅是捕獲)。通常這意味著向用戶顯示有用的錯(cuò)誤消息。
對(duì)于您的用例,檢查字符串是否為數(shù)字就足夠了:
if (s.matches("-?\\d+")) { Integer.parseInt(s) }
這是一個(gè)基本示例,可能不會(huì)涵蓋您的所有用例(例如前導(dǎo)零或溢出之類的東西)。
添加回答
舉報(bào)