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) }
這是一個基本示例,可能不會涵蓋您的所有用例(例如前導零或溢出之類的東西)。
添加回答
舉報