如何让用户阅读错误消息?

F'x*_*F'x 175 user-interface runtime-error error-reporting ui-design

如果您为非技术人员编程,您会发现自己处于高风险,用户不会阅读您措辞谨慎且具有启发性的错误消息,而只需点击第一个按钮就可以沮丧地耸耸肩.

所以,我想知道你可以推荐哪些好的做法来帮助用户真正阅读你的错误信息,而不是简单地放弃它.我能想到的想法会落在:

  • 格式化课程帮助; 也许是一个简单的短消息,带有"了解更多"按钮,可以生成更长,更详细的错误消息
  • 将所有错误消息链接到用户指南的某些部分(有些难以实现)
  • 只是不发出错误消息,只是拒绝执行任务(一种处理用户输入的"苹果"方式)

编辑:我想到的观众是一个相当广泛的用户群,不经常使用软件而且不是俘虏(即没有内部软件或狭隘的社区).在slashdot上询问了这个问题的更通用的形式,所以你可能想在那里检查一些答案.

t0m*_*13b 69

这是一个值得我+1的优秀问题.尽管简单,但问题涵盖了最终用户性质的许多方面.它归结为许多因素,这些因素将使您和软件本身受益,当然也会受益于最终用户.

  • 不要在状态栏中放置错误消息 - 它们永远不会读取它们,尽管它有颜色等等......它们总是会错过它们!无论你怎么努力......在Win 95 UI测试推出之前的一个阶段,MS进行了一个实验来阅读UI(编辑 - 应该注意的是,消息在上下文中明确说明"看看椅子下面",100美元的钞票贴在主人坐在椅子底部......没有人在状态栏中看到这条消息!
  • 使消息简短,不要使用诸如"警报:系统遇到问题"等令人生畏的词语,最终用户将按下恐慌按钮并且会反应过度......
  • 无论你怎么努力,都不要用颜色来识别信息......在心理上,它就像向公牛挥舞着一面红旗!
  • 使用中性的发音词来表达最小的反应以及如何继续!
  • 最好显示一个列出中性错误消息的对话框,并包含一个复选框,指示"您希望将来看到更多这些错误消息吗?",最终用户想要的最后一件事就是工作在用弹出消息轰炸的软件中间,他们会感到沮丧并被应用程序关闭!如果勾选了复选框,请将其记录到文件中...
  • 让最终用户知道会有什么错误消息...这意味着...培训和文档......现在这是一个棘手的问题...你不希望他们认为会有是'问题'或'故障',如果发生了什么......他们一定不会知道会有可能的错误,确实很棘手.
  • 总是,总是,不要害怕在平安无事的情况下要求反馈 - 例如'当错误号1304出现时,你是如何反应的?什么是你的解释' - 奖金,最终用户可能能够给你一个更连贯的解释,而不是'错误1304,数据库对象丢失!',相反,他们可能会说'我点击这个所以所以,然后有人不小心拉了机器的网线,这将使你不得不处理它,并可能修改错误,说'哎呀,网络连接断开'......你得到漂移.
  • 最后但并非最不重要的是,如果您想要定位国际受众,请考虑到错误消息的国际化 - 因此这就是为什么要保持中立,因为这样会更容易翻译,避免同义词,俚语等等翻译毫无意义 - 例如,菲亚特福特,这家汽车公司正在销售他们的品牌菲亚特福特平托,但注意到在南美洲没有发生任何销售,事实证明,平托是"小阴茎"的俚语,因此没有销售...
  • (ed)在标题为"错误消息"或"纠正措施"或类似文档的单独部分中记录预期的错误消息列表,以正确的顺序列出错误编号,并带有一两个关于如何继续的声明. ..
  • (ED)由于维克多Hurdugaci为他的投入,保持礼貌的消息,不要让最终用户觉得自己很蠢.如果用户群是国际性的话,这与Jack Marchetti的答案背道而驰 ......

编辑:特别感谢gnibbler,他提到了另一个非常重要的观点!

  • 允许最终用户能够选择/复制错误消息,以便他们可以通过电子邮件发送给帮助支持团队或开发团队.

编辑#2:我的坏!哎呀,感谢DanM提到了关于这辆车的故事,我把名字搞混了,这是福特平托......我的坏...

编辑#3:ed突出显示,以指示其他人或附录,并记入其他人的输入...

编辑#4:回应肯的评论 - 这是我的看法......不,不是,使用中性标准的Windows颜色......不要选择华丽的颜色!坚持使用黑色文本的正常灰色背景颜色,这是Microsoft规范中的常规标准GUI指南.参见UX准则(ed).

如果你坚持使用华丽的颜色,至少要考虑潜在的色盲用户,即可访问性,这是残疾人的另一个重要因素,屏幕放大友好的错误信息,色盲,那些遭受白化病的人,他们可能对华丽的颜色和癫痫症敏感......可能会受到特定颜色的影响,可能引发癫痫发作...

  • @DanM:纠正了 - 嘿,那是一个有趣的......哎哟!听起来就像一辆木制车轮,木制车轮...... (2认同)

Mik*_*keJ 16

向他们展示消息.尽职尽责,但将每个错误记录到文件中.用户无法记住他们正在做什么或事件发生后几秒钟的错误信息,就像每个人的目击者账户一样.

提供一种允许他们通过电子邮件发送或将日志上传到您的好方法,以便您可以协助他们协调问题.如果它是一个Web应用程序:甚至更好,您甚至可以在任何人报告问题之前收到有关情况的信息.

  • 这是一个很大的+1.请注意,开发人员部分可以包含完整堆栈跟踪和其他详细信息.如果需要,您甚至可以捕获应用程序屏幕截图(特别是对于内部WinForms应用程序). (2认同)

Mat*_*son 11

简答:你做不到.

不那么简短的回答:让它们变得可见,相关和具体情境(突出它们搞砸了).但是,你仍然在打一场失败的战斗.人们不会在电脑屏幕上阅读,他们会扫描,并且他们已经接受过点击按钮的培训,直到对话框消失为止.


Jac*_*tti 10

根据您的用户群,编写有趣/粗鲁/个人错误消息可以很好地工作.

例如,我写了一个应用程序,让我们的人力资源人员能够更好地跟踪员工的雇用/开除日期.[我们是一家小公司,非常悠闲].

当他们输错了日期我会写:

嘿笨笨的屁股,学习如何输入约会!

编辑:当然更有用的信息是:"请输入日期为mm/dd/yyyy"或者可能在代码中尝试找出他们输入的内容以及他们是否输入"blahblah"以显示错误.然而,这对于我个人认识的人力资源专家来说是一个非常小的应用程序.因此,人们,阅读这篇文章的第一行:取决于您的用户群...

我最近参与了一个艺术学院项目,因此错误信息面向观众,例如:

巴洛克时期之前的大多数艺术都没有签名.但是,我们现在已超越巴洛克时期,因此必须完成所有领域.

如果可能的话,基本上可以将它传递给您的观众,并避免因为所有非常普遍的错误而感到厌烦,例如:"请输入电子邮件"或"请输入有效的电子邮件".

  • 学习如何输入约会!! - 当然可以给我一个线索.我不应该猜测正确的格式. (7认同)
  • 为巴洛克式消息+1,我总是被这种创造力娱乐:) (4认同)
  • 不确定我多喜欢那种消息......毕竟,为什么我要学习如何输入约会? (2认同)

med*_*pal 10

警报/弹出窗口很烦人,这就是为什么每个人都会点击他们看到的第一个按钮.

让它不那么烦人.示例:如果用户输入的日期不正确,或输入了预期数字的文本,则不要弹出消息,只需突出显示该字段并在其周围写一条消息.

制作自定义消息框.不要使用系统的默认消息框,例如Windows XP消息框本身就很烦人.创建一个新的彩色消息框,背景颜色与系统默认值不同.

非常重要:不要坚持.有些消息框使用模态对话框并坚持让你读它,这非常烦人.如果您可以将消息框显示为警告消息,则会更好,例如,堆栈溢出消息显示在页面顶部,通知但不烦人.

更新
使消息有意义且有用.例如,不要写"未找到键盘,按F1继续".

  • 1和3都不错。出于可访问性的原因,2 是有问题的。系统标准控件可进行特殊处理。你的变体不能。 (2认同)

Bob*_*ore 10

我们在错误框中放置了一个简单的令人难忘的图形:不是图标,相当大的位图,没有像标准的Windows消息图标.没有人能记住消息框的措辞(如果盒子有一个"OK"按钮,大多数人甚至都不会读它),但是大多数人都记得他们看过的照片.因此,我们的支持人员可以问客户"你看到喝咖啡的人吗?" 或者"你看到空桌子了吗?" 至少我们大致知道出了什么问题.


Bry*_*ley 8

最好的UI设计将是您几乎从不显示错误消息的地方.该软件应适应用户.通过这种设计,错误消息将是新颖的并且将吸引用户的注意力.如果你用那种无意义的对话框给用户加油,那么你明确地训练他们忽略你的信息.


bl4*_*0l7 6

在我看来和经验中,是高级用户,他们不会阅读错误消息.我认识的非技术观众最仔细地阅读屏幕上的每条消息,此时的问题主要是:他们不理解.

这一点可能是你体验的原因,因为在某些时候他们会停止阅读它们,因为"他们无论如何都不理解它",所以你的任务很简单:

使错误消息尽可能易于理解,并将技术部分保留在引擎盖下.

例如,我传输这样的消息:

ORA-00237:不允许快照操作:新创建的控制文件原因:尝试使用CREATE CONTROLFILE新创建的当前安装的控制文件调用cfileMakeAndUseSnapshot.操作:装入当前控制文件并重试该操作.

类似于:

由于数据库的瞬间问题,无法处理此步骤.请联系(您的管理员|帮助台|任何可以联系开发人员或管理员以解决问题的人).抱歉给你带来不便.

  • 然后admin/helpdesk/etc听到这条消息,并问"我该怎么办呢?".你的第二个信息是无用的.对于前者,从未使用过Oracle软件(根据前缀猜测),我仍然可以假设我应该对此做些什么. (2认同)

Jan*_*zny 5

向用户显示错误消息有意义,并且这是向他们提供帮助的一种方式,他们将阅读它.如果它只是行话或一般的废话,他们将学会如何巧妙地解雇它们.

我已经了解到,包含一个错误对话框以及发送(例如通过电子邮件)详细诊断信息的默认操作是非常好的做法,如果您快速回复那些包含有价值信息或解决方法的电子邮件,他们会崇拜您.

这也是一个很好的学习工具.在将来的版本中,您可以解决已知问题或至少提供就地解决方法信息.在此之前,用户将了解到此消息是由X引起的,问题可以通过Y解决 - 所有这些都是因为有人向他们解释过.

当然,这不适用于大规模的应用程序,但在具有数百个用户的企业应用程序中非常有效,并且在精简敏捷,经常发布早期版本的环境中.

编辑:

由于您拥有广泛的用户群,因此我建议您提供能够满足用户/期望用户的软件,例如.如果电话号码格式不正确,请不要向他们显示eroror消息,如果他们没有重新格式化.

我个人喜欢不会让我思考的软件,偶尔你(开发人员)无法解释我的意图,提供一个非常好的(并由实际用户评论)消息.

众所周知,人们不会阅读文档(当你插入家用电器时,你是否读过背靠背的说明?),他们试图快速获得结果,当你失败时你必须引起他们的注意(例如.使用有意义有用的信息禁用默认按钮一段时间.他们不关心你的软件故障,他们现在想要得到结果.