# R01-B 业务异常 HTTP 状态映射收束实施报告 > 状态:R01-B 已完成实现和自动化验证,待独立代码复验。 ## 1. 基线与范围 - 分支:`refactor/r01-structure-performance` - 起点:`0b5b849 refactor: centralize request identity and request ID handling` - 仅修改异常 HTTP 状态解析和对应特征测试;未进入其他 R01 子阶段。 - 开始前暂存区和已跟踪工作区为空;历史未跟踪产物完整保留。 ## 2. 实现 `GlobalExceptionHandler` 使用不可变 `Map` 集中登记 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; - 未暂存、未提交、未推送; - 未删除历史未跟踪文件。