You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring中@ExceptionHandler用法及控制器抛出业务异常合规性咨询

问题解答

你当前的写法是完全合规的,更推荐直接在控制器层抛出异常交给全局异常处理器处理,不需要手动捕获返回对应ResponseEntity,理由如下:

  • 符合职责分离的设计原则:@ControllerAdvice的定位就是统一处理全项目的 controller 层异常,控制器只需要聚焦正常业务流程的返回逻辑,不需要冗余的try-catch代码,整体可读性更高。
  • 减少重复代码:如果每个涉及用户查询的接口都单独捕获UnknownUserException封装404返回,后续如果要调整这类异常的返回格式、日志打印逻辑、状态码,都需要逐个修改接口,维护成本很高。统一走全局异常处理器只需要修改一次逻辑即可全量生效。
  • 你当前的代码逻辑本身是完全通顺的:业务层findById方法抛出UnknownUserException后,不需要控制器做额外处理,全局异常处理器会自动匹配到对应的@ExceptionHandler方法,返回你定义的ErrorMessage结构并设置404状态码,完全满足需求。

只有一种场景建议你在控制器层单独捕获:该异常的处理逻辑仅对当前接口生效,其他接口抛出UnknownUserException需要走不同的返回规则时,再单独处理即可。

内容的提问来源于stack exchange,提问作者FloranePlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 07:30:01