【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

如何编写有用的错误消息?

  • 2021-07-20
  • 本文字数:3176 字

    阅读完需:约 10 分钟

如何编写有用的错误消息?

错误消息的领域涉及很多方面的内容。它们需要将 UX 领域的几乎所有元素(信息、说明、界面、微文案)结合起来,并且用几句话将这些信息阐述清楚。所有这些元素都是为了一个共同的目标:在出现问题时帮助用户



错误消息需要快速、清晰地通知、指导和引导用户


但上面的说法还是太简单了,因为错误消息还需要包含以下内容:


  • 你的站点或系统的结构:用户和开发人员都不希望看到无穷无尽、含义各异的文本字符。所以你需要考虑为之编写错误消息的系统上下文。你需要找出系统的所有需求和约束,然后尽可能让错误逻辑保持简单和一致。

  • 整体体验:从现有的设计模式中汲取灵感,或共同打造一个新的设计模式来满足设计和内容需求。用户都喜欢熟悉的内容,并且重用各种语言模式就像重用各种设计模式一样会让大家都很满意。

  • 品牌和产品:消息应该反映你的品牌或产品的声音和基调,这些内容还要同上下文和用户心态保持平衡。


那么,如何编写对所有人和用户都有帮助的错误消息呢?你该从哪里入手?

(先)不要写任何东西!


什么都不管就开始打字是很诱人的做法。你觉得你的大脑每次只会应付一条消息,因此每个错误都能写出完美、井井有条的消息!


听起来很棒?但情况并非总是如此。


如果你正在开发一个新的网站、工具或系统,你需要写很多错误消息才行。如果你要添加一条消息,那么同类的消息可能已经有好几条了。


利益相关者也有很多:设计师、开发人员、品牌人员,他们都希望看到精心设计、保持一致的错误处理方法。


用户需要在他们遇到问题时获得错误消息的帮助——所以这些消息最好是有用的。


因此,与其“编写”错误消息,不如考虑“构建”消息。

打下坚实的基础


如果你正在创建一个全新的网站、工具或系统,请召集整个团队,共同列出所有可能出错的事情,例如:


  • 可能提交错误信息的人

  • 将用户引向不存在页面的损坏链接

  • 系统整个崩溃,没有任何解释


然后,开始对它们分组——你的分组方法将取决于你所开发的产品,这里有一些例子:


  • 系统和网络

  • 字段和输入

  • “你不能那样做”


现在将这些事件按照令人困惑(frustrating)、烦人(annoying)到令人生气(infuriating)的级别分类。这一部分引用了 Deliveroo 的内容设计团队的理念,他们也写了一篇关于错误消息的出色文章


在下面这个分类图上,到了某一点后,错误就会阻止用户会话继续进行下去。用户或系统都无法修复它。他们的关键路径被打乱了。



将这些事件分组后,你就更容易设计出一致的模式。按严重程度排名可以帮助你表达正确的语气。

构造错误消息


一旦你构建了一些基础,你就可以给你的错误消息建立一些结构。这样,所有错误消息就都会保持一致,永远都不会过于冗长。

你应该问自己三个关键问题:


  1. 谁触发了错误?

  2. 用户:如果是用户导致了错误,比如输错了电子邮件地址,那就不要道歉。这时候道歉只会花费用户更多的时间和精力来阅读和处理,时间是很宝贵的。

  3. 系统:如果是我们的错,那就说声“对不起”。

  4. 我们知道是什么原因造成的吗?

  5. 是:解释发生了什么,或者为什么有些事情不起作用。

  6. 否:如果我们不知道出了什么问题,请承认并告诉他们。向他们保证我们正在努力修复问题。

  7. 我们可以现在就修复吗?

  8. 是的,我们可以:解决问题,并告诉他们你正在做什么以提供帮助

  9. 是的,用户可以:给他们明确的指示来引导他们解决问题

  10. 否:如果没法继续下去,请提供最佳建议或引导他们后退一步重试。只有在有用的情况下才将人们带到帮助文档或实时/web 对话中。



使用一系列问题和构建块构建你自己的错误消息

让错误消息自行生成


一旦你有了一个定义好的结构,你就有了一个很好的公式-构建块组合来构建用户可能遇到的所有错误消息。


你现在可以按这样的结构来编写错误消息:


[解释] [指导]


[道歉] [解释] [解决]


或者在非常糟糕的情况下:


[道歉] [承认,安抚] [引导他们回来]



在密码框中,用户可能忘记了正确密码。因此你需要创建第二个循环,并提供让用户重回正轨的流程。


这样做可以让句子结构保持简单、清晰和一致,这对大家都有好处。


用户会感到更加熟悉并更快地处理它们。设计师可以正确地预估消息内容的间距和设计模式。开发人员也可以开始构建逻辑和字段验证可能需要的细节级别。

收尾工作


所以,现在你知道了你的错误消息需要满足哪些要求,那么我们的消息具体应该说什么呢?


我们可以在构建块中加入其他一些内容,比如:


  • 错误对用户来说是多么烦人,多么令人头疼

  • 你的品牌声音和基调,可能需要根据品牌调性来调整具体内容

  • 上下文,例如设计和开发需求

选对说法


首先,你的错误信息应该一直都是清晰准确的。它应该听起来很人性化,并且只使用你日常对话中会用到的词汇。



“无法连接”听起来不像“未检测到互联网连接”那么机械,虽然它们说的是同样的事情。


你的产品还应该具有一致的个性或声音。一些品牌(例如私人银行)的声音听起来更正式,因为这种正式感能让用户感到自己的资金更加安全可靠。而其他一些品牌(如时尚、游戏或运动行业)则可能更健谈、不拘礼节,甚至随性。


你的错误消息都应该符合你的品牌声音调性。错误消息应该考虑到受众身份,以及他们为什么、何时使用你的产品。

打出正确的语气


当品牌声音固定下来以后,你的语气需要和不同的错误情况相适应。


如果错误很小,例如用户输入了错误的电子邮件地址,你的语气就可以比较随意,同时让人感到你正在提供帮助。如果你的品牌声音允许的话,你还可以加入一些温暖或幽默的语气。但这些调整不应该让你的信息更难理解。


如果错误真的很糟糕,比如有人被锁定在他们的帐户之外,那么现在你的语气就应该变得更加诚恳、更让人感受到帮助了。


你应该理解用户所处的位置,以及他们为了解决问题需要付出的努力。你的帐户恢复流程可能短暂而甜蜜。但是你的用户还是被锁定在他们的帐户之外了,这终归是给人压力的。



采取更直接的方法:“你需要恢复你的帐户”而不是“哎呀,你被锁定了!”,但告诉用户“我们随时为你提供帮助。”

平衡精度与一致性


在一个简单的表单上(比如用户注册页面),你需要考虑一些最常见的错误。你或许可以为用户提供更具体的指导,例如提醒他们密码始终应该包含数字,或者电子邮件地址始终应该包含“@”。


通过与设计师、开发人员和团队其他成员的紧密合作,你甚至可以提前阻止一些错误的发生!



如果你能提前同团队合作设计验证字段,就可以预防一些错误并改善整体用户体验。


但如果你正在处理一个大型表单,你可能无法涵盖所有​​类型的字段验证,因为这样会很难构建和维护。


如果是这种情况,请系统地应对问题。将字段类型分组,定义最常见的错误,看看是否可以将字段标签插入可重用的响应来生成错误消息。比如说:


  • 输入[字段标签]

  • 选择一个选项



一些更简单、全面的错误消息示例,它们平衡了技术限制和实用性,例如“选择一个选项”和“输入[字段标签]”。

写出好的消息的原则


根据项目的不同,你可能需要调整其中的一些想法。


它们并不是解决问题的一刀切原则。不同的情况需要不同的细节水平。需要根据用户测试和数据的情况来调整细节水平。


但是你可以遵循一些很好的原则,它们可以帮助你写出很出色的错误消息:


  • 使用通俗易懂的语言:写出你会大声念出来的句子和单词

  • 分解长句:两个短而清晰的句子比一个长句好

  • 使用主动语态:应该说“输入你的姓名”,而不是“未输入姓名”

  • 修剪不必要的词:“请”往往是累赘的单字

  • 避免责怪用户:不要说“你没有输入你的电子邮件地址”,而是让他们“输入一个电子邮件地址”

总结


错误消息可能写起来很让人头疼。仅仅几句话就可以决定用户体验的成败。只要能系统地构建错误消息,你就可以让消息内容清晰、富有建设性。这种系统方法可以防止消息内容跑偏或者太过宽泛,也能维持一大堆消息的一致性。


一套合理正确的编写流程有助于实现更简洁的设计、更精简的代码,带来更快乐的用户。所以你的重点不应该放在具体的编写上。首先建立你的基础,定义一个结构,然后再慢慢装点它们吧。


原文链接:


https://www.bbc.co.uk/gel/guidelines/how-to-write-useful-error-messages

2021-07-20 14:001246
用户头像
王强 技术是文明进步的力量

发布了 786 篇内容, 共 377.4 次阅读, 收获喜欢 1715 次。

关注

评论

发布
暂无评论
发现更多内容

选择正确的框架:探索 Spring Cloud 和 Dubbo

Liam

程序员 微服务 Spring Cloud dubbo 后端

Masks Person面具人MAR现在值得参与吗

币离海

你折腾一天都装不上的插件,函数计算部署 Stable Diffusion 都内置了

Serverless Devs

Serverless 模型

亚信科技AntDB数据库携“U8C+AntDB联合产品”亮相“2023全球商业创新大会”,开启生态合作新篇章

亚信AntDB数据库

数据库 AntDB AntDB数据库

文心一言 VS 讯飞星火 VS chatgpt (87)-- 算法导论8.2 4题

福大大架构师每日一题

福大大架构师每日一题

堆叠大陆 Stacklands for Mac(卡牌游戏)v1.3.4中文原生版

mac

堆叠大陆 苹果mac 村庄建设游戏 Stacklands 卡牌游戏

华为主题十周年共创海报还能这么玩?

最新动态

使用 WebGL 为 HTML5 游戏创建逼真的地形

3D建模设计

WebGL 地形

人工智能的优势:使用 GPT 和扩散模型生成图像

3D建模设计

人工智能 生成式AI

Linux 可执行文件瘦身指令 strip 使用示例

互联网工科生

Linux 资源

木鱼一敲烦恼丢掉,一个恢复内心平静的赛博空间

荣耀开发者服务平台

小程序 前端 安卓 组件 服务卡片

dapp软件开发需要多少钱

西安链酷科技

DAPP智能合约交易系统开发 链游开发

跨平台.NET IDE集成开发 Rider 激活码破解版

mac大玩家j

开发环境 Mac软件

解锁项目管理神器——低代码开发平台

力软低代码开发平台

企业大数据传输的四类方式及镭速解决方案

镭速

大数据传输

交易所开发源码,数字货币永续合约交易平台搭建

V\TG【ch3nguang】

交易所开发

区块链交易所开发, 币币交易系统搭建

V\TG【ch3nguang】

公链项目开发 哪条公链生态好

西安链酷科技

DAPP智能合约交易系统开发 DAPP系统开发 开发软件

Solr数据迁移ES

腾讯云大数据

ES

“银河护卫队总部”放大招!Milvus 核心组件再升级,主打就是一个低延迟、高准确度

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

OpenAI 函数调用教程

3D建模设计

openai ChatGPT

通过一流的NFT开发提升您的数字形象

区块链软件开发推广运营

数字藏品开发 dapp开发 区块链开发 链游开发 NFT开发

哈希游戏开发、哈希尾数、单双竞猜游戏开发

西安链酷科技

哈希算法 区块链游戏 web3

2023年中国信通院铸基计划“文本图像篡改检测系统技术规范”研讨会成功召开

合合技术团队

中国信通院 文本 合合信息 研讨会 图像篡改

安全大文件传输对行业重要性

镭速

大文件传输 传输大文件 安全大文件传输

开发一条以太坊公链需要多久

西安链酷科技

区块链技术开发 公链开发 联盟链开发 公链团队

数据库顶会 VLDB 2023 论文解读:字节跳动如何解决超大规模流式任务运维难题

字节跳动云原生计算

flink 流式计算 VLDB

Python 套接字编程完整指南

3D建模设计

Python

国际顶会SC23收录唯一区块链论文,微众银行技术实力受学术界认可

新消费日报

Zookeeper简述

数新网络官方账号

zookeeper 后端 ZooKeeper原理

低代码实现软件的快速交付与部署

互联网工科生

软件开发 低代码 企业级低代码平台

如何编写有用的错误消息?_语言 & 开发_James Cleaver_InfoQ精选文章