2015-06-03 82 views
2

try catch塊的自ELMAH記錄未處理的異常,我想記錄通過ELMAH所有錯誤,這是否意味着我不應該使用try-catch塊在我的代碼了任何地方?如果我不使用它,它會顯示死亡的黃色屏幕,我相信我可以通過自定義錯誤頁面來處理。使用與ELMAH

所以,我覺得try-catch塊將是無用的,如果你使用ELMAH,對嗎?如果不是,ELMAH使用try catch的用例是什麼?

+1

我想你錯了!您總是需要處理異常,ELMAH對於讓您瞭解未處理的異常,以及有可能存在錯誤的地方非常有用。您可以通過額外檢查來修復這些位置(例如,如果是&否則),然後您可以繼續執行代碼或向用戶顯示有意義的消息,或讓異常泡泡被處理,直到ELMAH處理。 –

+1

通常是一種組合。抓住你可以做些什麼的錯誤,讓ELMAH抓住其餘的。 http://stackoverflow.com/questions/21862753/log-exceptions-handled-in-try-catch-with-elmah –

+0

@SteveGreene如果我想記錄到ELMAH從catch塊中捕獲的錯誤,那該怎麼辦?我想將所有錯誤記錄到ELMAH,包括我的代碼中我期望失敗的地方(如數據庫訪問) – Chris

回答

1

你錯了。僅僅因爲ELMAH圍繞未處理的異常提供了一些日誌記錄功能(並且更多)並不意味着所有異常都被建議爲未處理。

你應該繼續使用異常你希望他們爲提供適當的處理,如進一步的診斷或他們身邊甚至業務邏輯來處理這種方式。

例如:如果您的應用程序與第三方服務,這是下跌你可能最終不得不您應該處理,電子異常集成。 g .:

try { 
    .. call third party service 
} catch (TimeOutException toe) { 
    .. handle such as redirection 
} 
+0

謝謝!舉個例子,如果我想在ELMAH中記錄那個時間異常,我該怎麼做?我可以重新投擲,但是如果我重新投擲之前,「重定向等處理」的東西不會被擊中。如果我在重定向之後放置它,我認爲重新投擲也不會被擊中。 – Chris

+0

你不能重定向*和* throw;你做任何一個或另一個。首先進行記錄[使用ELMAH記錄](http://www.asp.net/web-forms/overview/older-versions-getting-started/deploying-web-site-projects/logging-error-details-with-elmah -cs),重定向。完成。如果你拋出一個異常,不要自己處理,你的應用程序將會爆炸。 –