E6.10.2error-page diagnosis设计
需区分网络、权限与服务端问题
别名: 错误分类 · 403与500 · 网络失败页
概念解释
整页失败看起来都是「打不开」,原因却分三种,用户能采取的行动也分三种。网络问题出在这台设备到服务器的路上,换网络或稍后重试可能够。权限问题出在这个身份上,重试无效,要换账号或去申请。服务端问题出在产品自己,用户除了等待或报告几乎无事可做。错误页若共用一张「出错了」,会让没网的人去找管理员,让没权限的人反复刷新。分类是为了选对下一步,不是为了把状态码念给用户听。
机制
人用原因来选择策略:查网线、换账户、放弃。页面给的原因越接近可执行的策略,错误页就越短。把三种失败画成同一只悲伤的插画,策略被压成「再点一次」,而再点一次只对其中一类有用。分类还决定语气:网络失败可以是「你这边」,权限是「这个账号」,服务端是「我们这边」。语气用错会变成指责——设备明明离线,文案却说服务器忙。技术状态码对大多数人不可用;可用的是那条策略句。降级页是服务端问题的一种软形式:部分能力在,应说哪部分不在,而不是整页装死。
边界
有时客户端分不清超时是网络还是服务端挂了。与其猜错,不如同时给出「检查连接」和「查看状态页」,不要硬贴一张确定的罪名。权限不足与对象不存在常被后端做成同一响应以免泄露,错误页就不应假装「这个项目一定存在但你看不见」或「一定不存在」。混合失败(登录过期叠上网络断开)要先处理能本地判定的那层(没网),再处理身份。对内部工具,状态码可以作为次要信息出现,但不能替代策略句。
怎么落地
- 为网络、权限、服务端做三套错误页模板,主按钮分别是重试 / 申请或换账号 / 查看状态或返回。
- 文案写策略,不写状态码当标题;需要排障时把状态码放在次要位置。
- 能本地判定离线时,不要等服务器超时再显示一张「服务器错误」。
- 验证:分别断网、用无权限账号、模拟服务端 500,看三张页的下一步是否不同。下一步相同,分类就还没做。