授人以鱼不如授人以渔,上出错图
一般的,出错分析都是从下而上分析的,到最上一层通常是把错误指向最下面的cause
控制面板输出记录是这样的:
The error may exist in file [***/***.xml]
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL: insert into sys_logs (username,method,params) values (?,?,?)
说实话:这错误可能在对应的xml文件中,也只是可能,我这sql不存在有错啊,怎么会报错呢?绞尽脑汁也想不出来错误在哪里。
一般的,最后一个cause,会指向错误原因,这里我写了一个全局异常处理类;
点过去,会发现
分析around方法这说明,saveLog(),方法内部有问题,但是呢,怎么检查,加断点,都找不出saveLog方法内部的问题;上面说了,看错得看最下面的一个cause,他一般指向错误的根源,上图:
这错误定位在数据库,username太长,被截断了;而我们又将错误定位在saveLog方法内部,所以,错误只有一个地方,上图:
最终定位到往数据库存储的地方,原来是设置username,参数应该是user.getUserName(),而不是user.toString();