04 · BUSINESS BACKENDP012 MIN
Middleware 与错误处理
用请求管线处理通用关注点,并把预期业务冲突与未知故障分开。
MENTAL MODELMIDDLEWARE & ERROR HANDLING
01Trace
→02Auth
→03Rate Limit
→04Validation
→05Handler
→06Error Mapper
先把概念与边界说清楚
定义告诉你它是什么,边界告诉你它不负责什么;企业系统最常见的误解通常发生在两者混用时。
Middleware
在请求前后执行认证、解析、trace、限速或日志等横切逻辑。
Operational Error
可预期并可向客户端解释的错误,如库存不足、版本冲突、无权限。
Programmer / System Error
空指针、数据库不可用、未知异常等需要记录、告警和安全响应的问题。
库存不足为何不应返回 500
客户端把所有失败都显示“服务器异常”,监控也被业务冲突淹没。
- 01
定义 InventoryConflict 错误码。
- 02
映射为 409 与可操作详情。
- 03
未知异常记录 trace_id 并返回通用 500。
用户知道如何修正,告警也聚焦真正故障。
马上动手
- 为常见错误设计 code、status、message、details。
- 确定哪些 Middleware 有顺序依赖。
常见坑
- catch 后吞掉错误
- 错误响应包含内部堆栈
- 业务错误与系统错误同一告警级别
05 · KNOWLEDGE CHECK错误码和 HTTP 状态码为何都需要?查看答案⌄
答案
HTTP 状态表达通用类别,稳定业务错误码让客户端区分 inventory_insufficient、version_conflict 等具体处理路径。