2014-07-25 22 views
1

我在try/catch中使用System.Diagnostics.Trace#TraceError來跟蹤錯誤。通過查看TraceError的實現,看起來來自聽衆的錯誤沒有被真正捕獲。這是否意味着我應該寫這樣的代碼下面,以避免登錄傳播到主叫方的錯誤:我是否需要在try/catch中包裝Trace.TraceError?

catch (Exception e) { 
    try { 
     Trace.TraceError(e); 
    } catch { 
     // Do nothing 
    } 
} 

回答

3

Trace.TraceError未記錄拋出異常,因此無需catch它。即使如果它被記錄爲拋出異常,你也絕不應該是一個例外,並且什麼都不做。

讓異常升起,只有這樣你纔有機會找到問題所在。

Why is try {...} finally {...} good; try {...} catch{} bad?

+0

'你不應該捕捉異常,做nothing' - 我不同意高。如果冒出異常沒有價值,爲什麼要泡它?如果您的日誌子系統由於某種原因失敗,您是否應該崩潰整個應用程序?你應該提醒用戶嗎?最有可能不是!在這種情況下抑制異常,並讓應用程序繼續執行其工作。 –

+1

@PhilipPittle來吧。一般建議要注意。這就是我將相關問題聯繫起來的原因。正如你所說,規則可以根據場景進行更改:) btw爲什麼抑制錯誤?我寧願修復它在代碼中,如果它可以做到。 –

+0

永遠不要說永遠:)。我同意最佳做法是對這個例外做些事情。但這並不是每個案件都需要的。 –

相關問題