出错的时候,得有个说法
在你电脑上,出错了你自己看得见。在公网上,出错了只有用户看得见——而他不会告诉你,他只会关掉。
三种错,别混着处理
Section titled “三种错,别混着处理”| 类型 | 例子 | 该怎么办 |
|---|---|---|
| 用户填错了 | 邮箱格式不对、必填项空着 | 就地提示,告诉他改哪 |
| 暂时性故障 | 网络断了、对方服务超时 | 可重试,说清「稍后再试」 |
| 程序坏了 | 代码有 bug、数据库连不上 | 给用户一句人话,细节只进日志 |
AI 默认不区分这三种。它通常给你两个极端:要么整屏堆栈,要么一句「出错了」什么信息都没有。
最要命的一条:报错别把家底抖出去
Section titled “最要命的一条:报错别把家底抖出去”程序坏了的时候,默认的错误页经常会带上:
- 完整的文件路径(暴露你的目录结构)
- 数据库的表名、字段名,甚至 SQL 原文
- 环境变量、配置内容
- 依赖的版本号
给用户看:
保存失败了,请稍后再试。如果一直不行,把这个编号发给我:
a3f9c2
进日志:完整堆栈、请求参数、用户 id、时间,以及那个编号 a3f9c2。
那个编号是关键——用户报错时报编号,你在日志里一搜就定位到,不用猜。这一条几乎没人做,但成本极低。
空状态也是一种「出错」
Section titled “空状态也是一种「出错」”页面上没数据的时候长什么样?
- 第一次用,还没有任何内容
- 搜索没搜到
- 列表被删空了
**AI 通常只写「有数据」的情况。**没数据时,页面要么是一片空白,要么直接崩。
每个列表都问一句:空的时候显示什么? 至少要有一句话告诉用户「这里现在是空的,你可以做 X」。
跟 AI 提需求时怎么说
Section titled “跟 AI 提需求时怎么说”错误处理分三类:用户输入错误就地提示;临时故障提示可重试;程序异常给用户一句中文人话 + 一个错误编号,完整堆栈只写日志,绝不返回给前端。所有列表都要写空状态。
**故意把它弄坏,看它怎么反应。**这是本节唯一的验收方式:
| 怎么弄坏 | 应该看到 |
|---|---|
| 表单全空直接提交 | 就地提示哪项必填 |
| 填一堆乱码 / 超长字符串 | 提示格式不对,不崩 |
| 断网之后点操作 | 「网络不太好,稍后再试」 |
| 快速点两下提交按钮 | 不产生两条重复数据 |
| 访问一个不存在的地址 | 一个像样的 404 页,不是白屏 |
| 把数据库连接故意改错 | 用户看到人话 + 编号,看不到堆栈 |
最后一条最容易漏,也最重要。
学完这一节,你应该能做到
Section titled “学完这一节,你应该能做到”- 说得出三类错误分别该怎么处理
- 明白为什么报错细节不能返回给前端
- 你的站有错误编号机制,用户报编号你能在日志里查到
- 每个列表都有空状态
- 按上面那张表把自己的站故意弄坏一遍,六条全过