亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

發生錯誤時如何處理項目?

發生錯誤時如何處理項目?

慕桂英3389331 2022-10-20 14:58:17
考慮以下代碼:    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 繼續處理其余的項目?
查看完整描述

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());


查看完整回答
反對 回復 2022-10-20
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

通常,調用層次結構中的上層方法應該以有用的方式處理異常(不僅僅是捕獲)。通常這意味著向用戶顯示有用的錯誤消息。

對于您的用例,檢查字符串是否為數字就足夠了:

if (s.matches("-?\\d+")) {
    Integer.parseInt(s)
    }

這是一個基本示例,可能不會涵蓋您的所有用例(例如前導零或溢出之類的東西)。


查看完整回答
反對 回復 2022-10-20
  • 2 回答
  • 0 關注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號