我知道這樣做並不好,只要在Exception上加上try catch就可以了,因爲這可能導致隱藏問題和其他問題。我應該捕捉異常嗎?
但是,我仍然不知道我是否應該這樣做在我的情況。
我的網站是沉重的ajax,所以我發回json響應。所以,現在我已經確定了可以提出像一個空引用,SQL數據庫等一些可能的例外
因此,在這些的的catch語句我有一個很好的消息給用戶類似
發生了數據庫錯誤您 東西尚未保存
但是我想,如果他們是一些其他的例外,我不明白現在發生了什麼。如果發生這種情況,我認爲表單會掛起,用戶不知道發生了什麼。
所以會是在這種情況下更好的,我確定 - 如SQL
- 捕獲異常,outof範圍
- 日誌與ELMAH
- 顯示漂亮的定製味精每個異常
- 捕獲異常後
- 用elmah記錄
- 顯示一些通用信息
- 回來並添加該例外列表。
的
catch(IndexOutOfRangeException ex)
{
// log here
// customized msg
}
那是我的意圖。我不會給他們一些堆棧軌道。因爲我登錄ELMAH(一個錯誤記錄工具),所以我也沒有隱藏每個說的錯誤消息,所以我會知道它。這只是我在想,如果我沒有捕捉到所有的例外,並且我忘記了用戶可能會在黑暗中離開。我仍然會知道ELMAH發生了什麼事,但用戶不會。所以這就是爲什麼我認爲捕獲所有例外作爲最後手段顯示我自己的味精給用戶。一旦我看到它看到發生了什麼,並可能增加另一個捕獲。 – chobo2 2010-06-24 01:13:02
我的意思是可以向用戶顯示錯誤信息,但錯誤不應該給你正在使用的軟件提供任何提示,以避免這些細節可以用於附加你的網站。在一些地方,代碼應該捕獲所有剩下的異常,以允許您控制用戶將看到的消息。登錄的用戶不知道查詢「SELECT * FROM drupal.users WHERE name ='xyz'」失敗;他們只需要知道服務器端存在錯誤,他們需要稍後再試。 – kiamlaluno 2010-06-24 01:24:38
那麼我的郵件就像是「由於數據庫錯誤而無法保存您的信息」或「由於未知錯誤而無法保存您的信息」。 – chobo2 2010-06-24 01:30:11