forked from baskbuddy/zhangshun
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
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;
- 未暂存、未提交、未推送;
- 未删除历史未跟踪文件。