为Spring Boot接口添加try/catch记录日志是否会影响原有代码逻辑
结论
该修改会对原有业务逻辑造成明确的负面影响,核心问题如下:
- 异常被静默吞噬,调用方无法感知错误状态
原有代码中如果cityService.getPopulationPerCity()执行抛出异常,接口会抛出未捕获异常,Spring MVC默认会返回对应错误状态码(通常为500)给调用方,调用方可根据状态码判断请求失败,执行降级、重试等对应逻辑。修改后所有异常都会被catch块捕获,接口永远返回200 OK状态码,调用方无法感知请求失败,会拿到null的响应体继续执行后续流程,直接导致业务出错。 - 存在语法缺陷导致代码无法正常编译
两段代码均存在语法问题:方法定义缺少参数小括号、log.info语句末尾缺少分号、第一版代码重复写了两次return关键字,这些问题会导致代码无法编译通过,无法正常上线运行。 - 原有代码本身就存在参数传值bug
两段代码中调用cityService.getPopulationPerCity()时传入的参数都是未完成初始化的city变量,值为null,这属于原有代码就存在的逻辑bug,和本次try/catch修改无关,但也会导致业务逻辑不符合预期。
内容的提问来源于stack exchange,提问作者Rakid Naomi
相关产品推荐
相关产品推荐

