关于日志打印以及Spring事务控制的日常坑坑洼洼
最近在重新整理老系统的业务,基于老平台开发新的业务。看到一段关于财务退款的处理,很开心,这不就是我一直在找的核心处理模块吗。看一下出入参以及大致逻辑,决定复用。三下除以两下,调用业务,打印日志,OK,测试。然而,测试一跑,便是相当尴尬,而且越跑越尴[/强颜欢笑] 先是日志一段刷没有看到异常堆栈,退款单据也成功了,但是快递费用没有退,即退款明细没处理完,单据成功了。WTF,这不是事务没回滚吗,可是没异常呀,是不是异常被吃掉(捕捉)或者被什么条件过滤掉了。review了一下代码,发现:增强for循环里面更新集合数据,那么该出场的 java.util.ConcurrentModificationException堆栈呢?捕捉异常看了一下,是:e.getMessage()......诶,grep搜索一下日志,真心有一行日志是这个异常,但是不好发现,日志的打印还需要规范引发思考...... 一、关于Exception日志打印心得,总结记录收集一下:(1)打印日志堆栈要清晰:打印日志要打印出异常堆栈,尽量避免e.getMessage()打印,业务可处理异常除外。(2)注意吃掉异常事务不会滚:异常导...