错误案例
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."); } }