错误消息文本-最佳做法
我们正在更改一些旧的,写得不好的错误消息的文本。关于编写良好错误消息的最佳做法(特别是Windows XP / Vista),有哪些最佳实践资源?
解决方案
始终包括纠正错误的建议。
最终的最佳做法是首先防止用户引起错误。
不要告诉用户他们不关心的任何事情;错误代码5064对任何人都没有意义。不要告诉他们他们做错了什么;首先禁止它。不要怪他们,尤其不要怪软件犯了错误。最重要的是,当出现问题时,告诉他们如何解决,以便他们继续前进并完成一些工作。
尝试找出一种编写软件的方法,以便为他们解决问题。
对多语言的支持适用于所有类型的消息,但在出现错误消息时往往会被遗忘。
其次,我不会告诉用户无用的神秘信息,例如数字错误代码。但是,我会说一定要记录该信息,以便由精通技术的人员进行故障排除。
对于任何用户输入(字符串,文件名,值等),请始终显示错误的值并在其周围加上定界符(引号,方括号等)。例如
找不到我们输入的文件名:" somefile.txt"
这有助于显示可能潜入的所有空格/回车,并极大地减少了故障排除和挫败感。
一个好的错误消息应该是:
- 保持镇静(没有蓝屏或者黄屏死亡)
- 向用户提供指导以纠正问题(如果可能,请自行解决,或者与谁联系以寻求帮助)
- 隐藏无用的,深奥的程序员废话(不要说"第45行出现空引用异常")
- 描述性而不冗长。足够的信息来告诉用户他们需要知道什么,仅此而已。
我开始做的一件事是生成一个唯一的数字,该数字将在错误消息中显示并写入日志文件,以便当用户向我发送屏幕截图或者致电并说:"我出现错误。它说我的参考号码是0988-7634"
- 避免来自不同地方的相同错误消息;如果可能,请使用file:line进行参数设置,或者使用其他上下文使开发人员可以唯一地标识错误发生的位置。
- 设计该机制以使其易于本地化,尤其是在它是商业产品的情况下。
- 如果错误消息是用户可见的,则使它们成为完整的,有意义的句子,而无需假定我们对代码有深入的了解。记住,我们总是太接近问题了-用户却不是。如果可能,请向用户提供如何进行操作,与谁联系等方面的指导。
- 如果可能,每个错误都应有一条消息;如果不是,则尝试确保所有错误放开路径最终都到达一条错误消息,该错误消息可以阐明发生的情况。我敢肯定,这里还会有其他好的答案...
实际上可能会读取较短的消息。
错误消息越长,用户阅读的内容越少。话虽如此,请尝试重构代码,以便在有明显响应的情况下消除异常。尝试仅使基于用户或者代码无法控制的事情发生的异常发生。
最好的异常消息是我们永远不必显示的消息。
错误处理总是比错误报告要好,但是由于我们是在改进错误消息,而不一定是代码,因此,这里有一些建议:
用户需要解决方案,而不是问题。即使消息很简单,例如"请关闭当前窗口,然后重试操作",也可以帮助他们知道在发生错误后该怎么办。
我还是集中记录错误的忠实拥护者。确保日志是人和计算机均可扫描的。用户并不总是让我们知道他们所遇到的问题,尤其是如果可以"解决"它们的情况,因此日志可以知道需要解决的问题。
如果我们可以轻松地控制错误对话框,那么拥有一个对话框,该对话框中会显示一条清晰易读的消息,并带有"详细信息"按钮以显示错误编号,跟踪等,这也可以为实时解决问题提供很大帮助。
出于安全原因,请勿提供用户不需要的内部系统信息。
一个简单的例子:登录失败时,不要告诉用户用户名错误或者密码错误;这只会帮助攻击者暴力破解系统。而是说"用户名/密码组合无效"或者类似的内容。
关于错误消息的措辞,我建议参考以下Windows应用程序样式指南:
- Windows用户体验指南,尤其是此处的错误消息部分。
- Microsoft样式手册