我最近不得不爲一位同事開發的現有服務開發一個額外的模塊。他放在try/catch塊中的主要工作職能用來捕獲冒泡到這個級別的所有unhadled例外,帶有堆棧跟蹤信息等一起記錄他們:如何實現頂級異常處理?
try
{
// do main work
}
catch(Exception ex)
{
// log exception info
}
儘管這使得程序非常穩定(如在'不太可能崩潰'),我討厭它,因爲當我測試我的代碼時,我沒有看到由它造成的異常。當然,我可以查看異常日誌並查看是否有新條目,但是我非常希望在拋出異常時獲得直接反饋(請將代碼中的光標放在代碼的右側)。
至少在我還在編碼和測試的時候,我刪除了這個頂級的try/catch。但是現在我的任務已經完成了,我必須決定是否將它放回發佈版本,否則。 我認爲我應該這樣做,因爲它使服務更穩定,而且它的全部要點是它在後臺運行而不需要任何監督。另一方面,我已經讀過,應該只是調用特定的例外(如IoException
),而不是一般的Exception
。
你對這個問題的建議是什麼?
順便說一下,該項目是用C#編寫的,但我也對非.NET語言的答案感興趣。
另請參見 http://stackoverflow.com/questions/576532/is-dying-is-awesome-preferred – Brian 2009-03-05 21:51:38