在业务代码1里面报错了,但是实际没有看到报错信息1?
//第一个try catch
try {
List<Plan> plans = planService.lambdaQuery()
.eq(Plan::getYn, YnEnum.YES.getLabel())
.eq(Plan::getStatus, Plan.Status.DONE.getCode())
.isNotNull(Plan::getPId)
.list();
List<List<Plan>> partition = Lists.partition(plans, 5);
partition.forEach(planList -> {
//第二个try catch
try {
//业务代码1.....
} catch (Exception exception) {
log.error("报错信息1:", exception);
}
});
} catch (Exception exception) {
log.error("报错信息2:", exception);
} finally {
log.info("释放requestId[{}]的锁", requestId);
Redis.unlock(Module.REFRESH_PROMOTE, workerLockKey, requestId);
}
回复
1个回答
test
2024-07-02
你没有看到报错信息1,你怎么知道是业务代码1 报错了...
至少给一下具体错误是啥吧逻辑上按照你这个代码,如果业务代码1部分抛出异常了,会被循环内catch住,然后输出一个log.error,然后就继续了,不会往外层抛,也就是到不了报错信息2。
盲猜,如果非常强烈的能够确认是业务代码1有问题,并抛出了Exception,但没看到log输出保存信息1,那先去看一下log.error级别的输出是怎么配置的
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容