# 异常处理

## 错误码对照表

| 错误码 | 展示给用户 | 处理方式 |
|--------|-----------|----------|
| `-1` (传输错误) | 网络请求失败，请检查网络后重试 | 检查网络连接后重试 |
| `10001` | 验证码发送过于频繁，请1分钟后再试 | 等待1分钟后重新发送 |
| `10002` | 今日验证码次数已达上限，请明天再试 | 终止流程，告知用户明天再试 |
| `10003` | 验证码有误，请重新输入 | 提示用户重新输入验证码 |
| `10004` | 验证码已过期，请回复"重新发送"获取新验证码 | 重新执行 `send_code` 发送验证码 |
| `10005` | 验证失败次数过多，请10分钟后再试 | 终止流程，等待10分钟 |
| `10006` | 该手机号今日已提交过需求，请勿重复提交 | 终止流程，告知用户已提交 |
| `10007` | 抱歉，服务暂时繁忙，请稍后再试 | 重试一次，仍失败则终止 |
| `10008` | 网络请求超时，请稍后重试 | 重试一次，仍失败则终止 |
| `10009` | 参数有误，请检查后重试 | 检查请求参数 |
| `10010` | 请先验证手机号 | 先调用 verify_code 验证手机号后再提交 |

## 传输层错误

当 CLI 无法连接到后端服务时（网络不可达、DNS 解析失败、连接超时等），CLI 输出：

```json
{"code": -1, "codeMsg": "网络请求失败: <具体原因>"}
```

退出码为 `2`。向用户展示："抱歉，服务暂时繁忙，请稍后再试"。

## 验证码流程异常处理

| 场景 | 处理 |
|------|------|
| 用户输入验证码格式不正确 | 提示"请输入正确的验证码（数字）" |
| 用户未收到验证码 | 用户回复"重新发送"后，重新执行 `send_code` |
| 发送频率过快（10001） | 提示"发送太频繁了，请稍后再试"，等待1分钟 |
| 当日次数用尽（10002） | 终止流程，提示"今日验证码次数已达上限，请明天再试" |
| 连续3次验证码错误（10005） | 终止流程，提示"验证失败次数过多，请10分钟后再试" |

## 提交流程异常处理

| 场景 | 处理 |
|------|------|
| 手机号未验证（10010） | 提示"请先验证手机号"，回到 Step 5 执行验证码验证 |
| 提交接口失败（10007） | 重试一次；仍失败则提示"抱歉，服务暂时繁忙，请稍后再试" |
| 今日已提交过（10006） | 终止流程，提示"该手机号今日已提交过需求" |
| 网络超时（10008） | 重试一次；仍失败则提示"网络请求超时，请稍后重试" |
