在业务代码1里面报错了,但是实际没有看到报错信息1?

作者站长头像
站长
· 阅读数 7

//第一个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个回答
avatar
test
2024-07-02

你没有看到报错信息1,你怎么知道是业务代码1 报错了...

至少给一下具体错误是啥吧逻辑上按照你这个代码,如果业务代码1部分抛出异常了,会被循环内catch住,然后输出一个log.error,然后就继续了,不会往外层抛,也就是到不了报错信息2

盲猜,如果非常强烈的能够确认是业务代码1有问题,并抛出了Exception,但没看到log输出保存信息1,那先去看一下log.error级别的输出是怎么配置的

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容