有一个异步任务, 要记录一段日志, 在savelog的时候使用的是mp的save方法, 程序直接中断了. 数据库也没有插入日志; 没有报错信息, 让我感觉很诡异;
代码结构大致:
ThreadUtil.execAsync(() -> {
memberMoveSingleLogService.save(successDO);
});
我想,这么大一个框架 不会没有抛异常吧?
最后想到,之前在自己整理接口的完整调用链路时发现,是tomcat等servlet容器打印的报错信息.
而我们现在用的异步方法, 所以就算有异常抛出,我们自己不打印就看不到;
最后代码改为:
ThreadUtil.execAsync(() -> {
try {
memberMoveSingleLogService.save(successDO);
} catch (Exception e) {
log.error("内部方法异常,",e);
}
});
兄弟们, 以后记住了, 异步方法都要自己try catch打印日志, 养成好习惯!
我想着应该也会有人跟我一样,记录一下 提醒后来者~~~ 共勉
如果感觉有用, 请点个赞支持一下,谢谢