錯誤案例
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."); } }