当「快缩短网址」的页面骤然空白,用户的第一反应不是“权限不足”,而是“系统坏了”。那一刻,信任像被剪断的丝线,无声坠落。
suo.run 要做的,正是把断掉的丝线重新系紧——让每一次异常,都成为一次温柔的提醒,而非冰冷的拒绝。

一、把“异常”翻译成“人话”
异常不是 bug 的别名,而是产品与用户之间一次短暂的失联。
我们把所有可能的失联场景预先拆解为四句话:
1. 网络断了——“请检查网络,稍后重试”;
2. 权限不足——“当前账号无权查看,联系管理员即可解锁”;
3. 服务器走神——“服务器开小差,已为你自动刷新”;
4. 输入超限——“一次最多 100 条链接,已为你保留前 100 条”。
把技术语言翻译成行动指令,空白页就有了温度。
二、四把钥匙,打开每一扇被异常锁住的门
1. 状态可见:让空白不再“空”
当权限缺失导致无数据,页面中央浮现一张插画:一把钥匙配一行字——“权限未开启,请联系管理员”。插画下方给出「复制管理员邮箱」按钮,用户一键即可求助。

2. 可退出:给焦虑一个出口
若服务器 500,弹层出现「服务器短暂迷路,稍后再试」;按钮不是「确定」,而是「返回首页」与「刷新再试」并列——用户随时能离开,也能再回来。
3. 指引性:把错误拦截在上游
批量缩短时,文件上传入口即写明「仅支持 .csv / .xlsx,≤2 MB」。若用户仍选错文件,前端即刻 toast:「文件格式不符,已为你过滤」。错误未发生,体验已闭环。
4. 容错:让误操作可逆
网络抖动导致生成失败,结果页出现「重新生成」按钮,并保留已填写的原始长链接,用户无需二次粘贴,一键即可复活任务。
三、把异常写进设计系统
我们将上述四种反馈固化为「suo.run 异常组件库」:
• 空状态插画(含权限、无数据、搜索无果 3 套)
• 全局 Toast(3 秒自动消失,支持手动关闭)
• 模态弹层(双按钮,文案统一)
• 重试按钮(保留上下文,自动重填)
设计师无需重复造轮子,研发直接调用,异常体验自此统一而优雅。
四、尾声
在 suo.run,我们相信:
每一次异常,都是产品向用户递出的第二次握手。
把握手做得轻柔而坚定,用户才会在短暂的松手之后,再次十指相扣。