清除排行榜緩存任務中,做循環處理時,每次都需要抓住異常記錄日誌

錯誤案例

for (String key : keys) {
    memberTopRankCache.remove(key);   //這裏可能拋出異常
    log.info(key + " removed.");
}

錯誤分析

使用場景是批量處理業務過程中,有一個失敗的處理可以忽略,不會影響後續執行。採用上面的寫法,循環體內拋出異常時,將導致剩餘的記錄都沒有得到處理。正確的做法是在循環體內抓住異常,記錄異常堆棧日誌和業務日誌。這樣的處理方式,可以有效的控制故障的範圍,減小影響面。

正確用法

for (String key : keys) {
    try {
        memberTopRankCache.remove(key);
        log.info(key + " removed.");
    } catch (Exception e) {
        logger.error(e);
        log.error("Remove key: " + key + " failed.");
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章