跳转到内容

出错的时候,得有个说法

在你电脑上,出错了你自己看得见。在公网上,出错了只有用户看得见——而他不会告诉你,他只会关掉。

类型 例子 该怎么办
用户填错了 邮箱格式不对、必填项空着 就地提示,告诉他改哪
暂时性故障 网络断了、对方服务超时 可重试,说清「稍后再试」
程序坏了 代码有 bug、数据库连不上 给用户一句人话,细节只进日志

AI 默认不区分这三种。它通常给你两个极端:要么整屏堆栈,要么一句「出错了」什么信息都没有。

最要命的一条:报错别把家底抖出去

Section titled “最要命的一条:报错别把家底抖出去”

程序坏了的时候,默认的错误页经常会带上:

  • 完整的文件路径(暴露你的目录结构)
  • 数据库的表名、字段名,甚至 SQL 原文
  • 环境变量、配置内容
  • 依赖的版本号

给用户看:

保存失败了,请稍后再试。如果一直不行,把这个编号发给我:a3f9c2

进日志:完整堆栈、请求参数、用户 id、时间,以及那个编号 a3f9c2

那个编号是关键——用户报错时报编号,你在日志里一搜就定位到,不用猜。这一条几乎没人做,但成本极低。

页面上没数据的时候长什么样?

  • 第一次用,还没有任何内容
  • 搜索没搜到
  • 列表被删空了

**AI 通常只写「有数据」的情况。**没数据时,页面要么是一片空白,要么直接崩。

每个列表都问一句:空的时候显示什么? 至少要有一句话告诉用户「这里现在是空的,你可以做 X」。

错误处理分三类:用户输入错误就地提示;临时故障提示可重试;程序异常给用户一句中文人话 + 一个错误编号,完整堆栈只写日志,绝不返回给前端。所有列表都要写空状态。

**故意把它弄坏,看它怎么反应。**这是本节唯一的验收方式:

怎么弄坏 应该看到
表单全空直接提交 就地提示哪项必填
填一堆乱码 / 超长字符串 提示格式不对,不崩
断网之后点操作 「网络不太好,稍后再试」
快速点两下提交按钮 不产生两条重复数据
访问一个不存在的地址 一个像样的 404 页,不是白屏
把数据库连接故意改错 用户看到人话 + 编号,看不到堆栈

最后一条最容易漏,也最重要。

  • 说得出三类错误分别该怎么处理
  • 明白为什么报错细节不能返回给前端
  • 你的站有错误编号机制,用户报编号你能在日志里查到
  • 每个列表都有空状态
  • 按上面那张表把自己的站故意弄坏一遍,六条全过