Hidewnd Docs Hidewnd Docs
首页
  • 常用开发环境
  • 常用提示词
  • 常用Linux命令
  • 常用Git规范及命令
  • Java开发聊天机器人
  • word模板生成实现方案
  • 基于Go写一个极简的通讯demo
  • SpringBoot配置文件加密处理
  • SpringBoot优雅的抛出业务异常
  • 通用大模型适配器
  • 10分钟快速搭建个人博客
  • [学习笔记]Lua
  • [学习笔记]JVM
  • [学习笔记]设计模式
  • [部署笔记]搭建Typecho博客
  • [部署笔记]部署Qsign签名机
  • [部署笔记]安装PVE系统
  • [部署笔记]部署KingBaseV9电科金仓
  • 技艺成本
  • Rules
  • Setting
  • Skill
  • 剑三网站合集
  • 合并大区角色数据处理
  • 25PT冷龙峰教学笔记
  • 25PT太极宫教学笔记
  • 25PT弓月城教学笔记
关于
GitHub (opens new window)
首页
  • 常用开发环境
  • 常用提示词
  • 常用Linux命令
  • 常用Git规范及命令
  • Java开发聊天机器人
  • word模板生成实现方案
  • 基于Go写一个极简的通讯demo
  • SpringBoot配置文件加密处理
  • SpringBoot优雅的抛出业务异常
  • 通用大模型适配器
  • 10分钟快速搭建个人博客
  • [学习笔记]Lua
  • [学习笔记]JVM
  • [学习笔记]设计模式
  • [部署笔记]搭建Typecho博客
  • [部署笔记]部署Qsign签名机
  • [部署笔记]安装PVE系统
  • [部署笔记]部署KingBaseV9电科金仓
  • 技艺成本
  • Rules
  • Setting
  • Skill
  • 剑三网站合集
  • 合并大区角色数据处理
  • 25PT冷龙峰教学笔记
  • 25PT太极宫教学笔记
  • 25PT弓月城教学笔记
关于
GitHub (opens new window)
  • Cursor
  • Rules

    • caching-and-distributed-lock
    • database-entity-annotations
    • design-patterns
    • idempotency-specification
    • java-21-language-specification
    • java-clean-code-effective-java-spec
    • java-entity-vo-specification
    • java-language-specification
    • logging-specification
    • openapi-and-api-doc-spec
    • persistence-repository-specification
    • rest-api-specification
    • springboot-architecture-layering
    • springboot-config-and-profiles
    • springboot-exception-and-error-code
      • 异常分类与基类
      • 全局异常处理
      • 错误码设计
      • 抛出异常的约定
      • 调试与追踪
    • springboot-testing-specification
    • validation-specification
  • Setting

  • Skill

  • Cursor
  • Rules
hidewnd
目录

统一异常处理与错误码规范

# 统一异常处理与错误码规范

# 异常分类与基类

  • 定义业务异常基类 BusinessException 承载可预期业务错误
  • 系统异常使用运行时异常表示,不直接暴露到底层详情
  • 按模块划分业务异常子类或者使用错误码枚举区分

# 全局异常处理

  • 使用 @RestControllerAdvice 统一处理异常
  • 使用 @ExceptionHandler 分别处理业务异常与系统异常
  • 在处理逻辑中统一转换为统一返回体结构
@RestControllerAdvice
public class GlobalExceptionHandler {

    @ExceptionHandler(BusinessException.class)
    public Result<?> handleBusinessException(BusinessException ex) {
        return Result.fail(ex.getCode(), ex.getMessage());
    }

    @ExceptionHandler(Exception.class)
    public Result<?> handleException(Exception ex) {
        return Result.fail("INTERNAL_ERROR", "系统异常");
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# 错误码设计

  • 错误码使用字符串或整型,按业务域分段管理
  • 推荐结构为 模块前缀 + 数字编码,如 USER_1001
  • 为每个错误码编写清晰描述与解决建议

# 抛出异常的约定

  • 在领域层与应用层中抛出业务异常,避免在 Controller 层充斥大量判断
  • 捕获底层异常时保留原始异常作为 cause
  • 在日志中记录异常详情,但对外返回统一错误信息

# 调试与追踪

  • 在错误响应中携带可追踪的请求标识,例如 traceId
  • 对高频或关键接口的异常情况进行统计与报警
springboot-config-and-profiles
springboot-testing-specification

← springboot-config-and-profiles springboot-testing-specification→

github
Theme by Vdoing | Copyright © 2024-2026 Hidewnd
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式