2009-09-17 50 views
3

我想知道我应该如何在我的web应用程序中处理最终用户可见的错误消息。错误消息中有多少信息给普通用户?

  • 您在 错误消息中给出了多少信息?

  • 你重定向的所有错误, 不分类型,一个常见的错误 页面,或者你有一小部分的网页(404,403,所有其他人)?

  • 你给错误代码,用户 可以参考/给你,只有 你明白吗?

  • 你给任何技术细节?

正如我所说,我的用户是非技术性的常规乔伙计。

+1

通常,您的Web应用程序框架将为您处理这些问题。你在用什么框架? – 2009-09-17 21:29:17

+0

@ S.Lott,假设他正在使用框架,正在使用的框架可能会做“错误”。我敢打赌,没有任何框架能够正确处理所有事情,即使您的框架提供了错误处理等功能,也很好问。 – strager 2009-09-17 21:36:05

+0

@ S.Lott:我正在使用ASP.NET MVC。 – Alex 2009-09-17 21:39:01

回答

5

向用户显示一个不错的错误,为自己记录一个详细错误。

1

我尽量做到以下几点:

  1. 确保你永远不会运行出现在错误消息的密码或连接字符串的风险。
  2. 确保将错误记录到持久性介质。我更喜欢一个数据库,以便我可以通过时间范围和其他参数进行查询。我不记录404s。
  3. 如果应用程序是一个内部应用程序,并不需要很漂亮,那么在页面上显示错误信息可能没关系。即使你正在记录这些东西,最好能够让你的用户通过电子邮件向你发送一个屏幕快照或复制/粘贴。
  4. 如果3似乎令人讨厌,请将一些错误信息写为HTML注释。然后,您至少可以通过查看来源查看信息。
+0

考虑安全性+1! – TrueWill 2009-09-18 01:41:17

1

一般来说,我试图给用户尽可能多的信息来帮助他们自己解决问题。例如,对于404的情况,您可能希望让他们知道要仔细检查他们正在查找的URL是否正确。

它们显然不需要堆栈跟踪等,但它对于您在某处进行诊断和调试时记录该级别的细节是有意义的。

1

致命错误,让他们短暂的,所以他们可以重复他们通过电话或电子邮件:无法连接到数据库等

非致命错误,完全描述的条件:错误,不能在没有发票日期的情况下保存发票。

我也总是记录一切,函数的参数以及可能使用的任何内部值。

0

我试图向用户显示足够的信息,他们知道这是他们需要告诉某人的问题,但尽量避免向他们展示这些信息让他们感到恐慌!

如果可能的话,错误信息应该告诉他们什么是失败的,例如他们的保存是否失败,或者保存正常,但之后刷新屏幕有问题。额外的错误信息(例如堆栈跟踪)应记录在某处,无需用户将其发送给您。

0

当谈到为最终用户显示错误时,我发现显示错误代码是一个好习惯(所以我和管理员知道它是什么错误),典型的“操作错误,请联系管理员”

对于可能导致用户操作的常见错误提供更多信息可能会更好。但通常太多的信息会吓倒或混淆用户。

0

Web应用程序的错误消息,应始终(在 至少)是回答这些问题的3(按顺序):

  1. 发生了什么?

  2. 为什么发生?

  3. 可以做些什么呢? “:苹果桌面界面人机界面指南”

我已经从苹果公司的 使用了很多年,原本。 Newer version。 Microsoft已有similar guidelines

这也使得容易写他们 - 这种结构 方法使得它更快地把它们写为一个可以只 回答问题。

错误消息也应该是特定的。任何信息 Web应用程序知道和用户可能 需要解决该问题应该在错误信息中。 (臭名昭着的)错误消息“发生错误。”简直是 不可接受。

可选:更多的技术信息,用户可能不知道 明白可以放在最后。但它应该标记为 。

0

无,只需显示给出一个参考号码,以便用户可以提供给您,并且您可以检查应用程序日志中的详细信息(显然您需要保留一份错误日志的副本)。