轻松聘AI开发
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2.1 KiB

R01-B 业务异常 HTTP 状态映射收束实施报告

状态:R01-B 已完成实现和自动化验证,待独立代码复验。

1. 基线与范围

  • 分支:refactor/r01-structure-performance
  • 起点:0b5b849 refactor: centralize request identity and request ID handling
  • 仅修改异常 HTTP 状态解析和对应特征测试;未进入其他 R01 子阶段。
  • 开始前暂存区和已跟踪工作区为空;历史未跟踪产物完整保留。

2. 实现

GlobalExceptionHandler 使用不可变 Map<Integer, HttpStatus> 集中登记 403、404、409、429;未登记业务码继续回退 400。登记辅助方法使用 putIfAbsent,同一整数业务码若出现不同状态会抛固定初始化异常,避免静默覆盖。

映射键保持为整数而非 ErrorCode:仓库存在历史共享数值常量,生产处理入口收到的也是整数业务码。此次未修改或“修正”任何历史常量。

3. 特征测试

新增 GlobalExceptionHandlerStatusContractTest:

  • 对全部现有 ErrorCode 常量逐项调用正式 handleBusinessException;
  • 独立快照四类显式状态集合,其余断言为 400;
  • 同时断言业务码、message、requestId 原样保持;
  • 通过反射只读调用私有解析器,证明未知整数码仍回退 400,未为测试扩大生产 API。

第一次定向编译曾因测试错误地调用不存在的 BusinessException(int, String) 构造器失败;整改为反射验证私有兜底后通过。未修改生产 API,也未删除或放宽断言。

4. 量化与验证

项目 结果
GlobalExceptionHandler 行数 328 → 232
errorCode == ErrorCode... 比较 121 → 0
异常定向/关联集合 207/207,0/0/0
mvn clean verify 2082/2082,Failures=0、Errors=0、Skipped=0,BUILD SUCCESS
OpenAPI 176 paths / 214 operations,All checks passed

5. 边界

  • ErrorCode 未修改;
  • V1–V43 未修改,无新增迁移;
  • 无新增公网接口、依赖、表或索引;
  • 未操作 Docker;
  • 未暂存、未提交、未推送;
  • 未删除历史未跟踪文件。