---
name: 防御性编码规则
type: review_rule
asset_kind: pipeline_rule
routes:
  - code_change
primary_triggers:
  - 防御性编码
  - 防御编程
  - 老系统编码
scope: [existing-system]
---

# 防御性编码规则

## 老系统接口调用
- 必须对老系统接口调用添加降级/兜底/重试
- 降级策略：返回兜底数据或走老逻辑
- 重试策略：最多 3 次，指数退避
- 超时设置：必须设置合理的超时时间

## 外部依赖
- 所有外部服务调用必须有 try-catch
- 所有外部服务调用必须设置超时
- 不可控的外部依赖必须有降级方案

## 数据操作
- 写操作必须使用事务
- 批量操作必须有分页/分批处理
- 数据校验在写入前完成

## 错误处理
- 不允许空 catch 块
- 错误日志必须包含上下文信息
- 非预期错误必须向上传播
