软件即沟通 书架

第 03 章 / 共 12 章

第三章 · 报错是最诚实的对话

软件对你说真话的唯一时刻

平时,软件的界面是精心装修过的:图标圆润,配色舒服,文案经过打磨。但出错的那一刻,装修会突然塌掉,露出里面的毛坯房——「Error 500: Internal Server Error」,或者更糟的,一长串普通人看了会心跳加速的英文堆栈。

所以我说报错是软件最诚实的时刻:它是系统内部状态不小心说漏了嘴。而这个时刻,恰恰也是用户最脆弱、最需要被好好对待的时刻——事情已经出错了,用户已经有损失了(时间、数据,或心情),这场对话怎么处理,决定了他还信不信你。

一条好的错误提示只有三个问题

别看错误提示只有一两行字,它要回答的问题其实非常固定。用户看到报错的瞬间,脑子里只转三个念头:

  1. 出了什么事?——用我听得懂的话说。
  2. 是我的错吗?——我需不需要内疚、需不需要改什么?
  3. 现在怎么办?——给我下一步,别把我晾在这儿。

拿这三问去量一下最常见的错误提示,你会发现它们几乎全部不及格:

而一条及格的错误提示长这样:「没保存成功——是网络断了,不是你操作的问题。你写的内容都还在,网络恢复后点这里重试。」三个问题全答了,而且顺序都对:先说事,再摘清责任,最后给出路。

大白话:好的报错像一个好护士。「只是皮外伤(出了什么事),不怪你,地太滑(谁的错),先坐这儿,我给你包扎,两分钟就好(怎么办)。」坏的报错像一张贴在急诊室门口的纸条:「故障代码 502。」

为什么工程师写不出人话报错

这不是文笔问题,是位置问题。错误提示通常写在代码的「异常分支」里——那是工程师最不想待的地方。写主流程的时候他意气风发,在实现一个激动人心的功能;写到出错处理时,他只想赶紧兜住别崩溃,于是随手把系统内部的错误码抛了出去。

于是用户看到的报错,其实是工程师在最低落的时刻、对着系统(而不是对着人)说的话。「Error 500」根本不是写给用户看的,它是工程师写给三天后排查问题的自己的备忘录,只是不小心显示到了屏幕上。

理解了这一点,改法就清楚了:错误提示不是代码的附属品,它是产品文案的一部分,应该用写首页标语的认真程度去写。有些团队甚至有一个规矩——每一条会显示给用户的报错,都要过一遍「三个问题」检查,过不了不许上线。这个规矩几乎零成本,但它把无数个「用户对着屏幕不知所措」的瞬间,变成了「哦,那我再试试」。

比报错更好的是不报错

当然,最高明的错误处理是根本不让错误到达用户。这一层也有讲究:

你会发现这三层背后是同一种东西:设计者提前替用户想到了会出什么事。这种东西有个听起来很软的名字,叫同理心。但下一章我要说的是,同理心在这行里不是态度,是一门可以拆解、可以施工的技术。

软件即沟通 · 竹小竹8167
费曼式写法 · 由多个 AI 代理撰写与互相审校