2009-09-17 48 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

無,只需顯示給出一個參考號碼,以便用戶可以提供給您,並且您可以檢查應用程序日誌中的詳細信息(顯然您需要保留一份錯誤日誌的副本)。