起因:
同事问了一个后端日志报错,页面不报错,并且日志打印异常信息为null,打印的日志看起来比较奇怪的问题,见下方截图。
排查:
检查了他的代码后, 发现使用了try-catch处理异常,
这里首先要注意,catch后是否需要继续抛出;由于这里catch后未做正确处理,导致前端没有接收到该错误,所以导致了页面没有正确显示错误信息;
其次,原代码中的这种写法是错误的,
catch (Exception e){
log.error("创建业务方失败:{}",e);
return false;
}
这种写法, 占位符不起作用,只会打印e的堆栈信息,所以日志输出看起来不符合预期。
正确写法应该是:
log.error("创建业务方失败:
{}", param, e);
或者
log.error("创建业务方失败
", e);
更多示例可参考: