2012-12-08 86 views
2

可能重複:
.NET Global exception handler in console application全球異常處理(控制檯應用程序)

我讀了很多關於全局異常的事情處理的計算器,但我找不到任何引用我的主題正確。我編寫了一個控制檯應用程序,它只在它們發生的方法中捕獲異常。沒有投擲的。我想要的是全局異常處理。我沒有關於異常處理的基本指導,但除了那些基礎知識之外,我不知道。想象一下,應該有一個類處理這些異常(由不同類中的方法拋出)。我不需要任何錯誤記錄或錯誤報告機制。只需要基礎知識(模式無論...)來實現這種全局處理。感謝閱讀至今!

+1

表示添加應用廣泛的異常處理程序掛鉤到程序第一行的'AppDomain.CurrentDomain.UnhandledException'事件。 –

+0

爲一個控制檯應用程序,你只需要在try/catch中包裝你的'main'方法。 – Servy

回答

3

全局處理異常僅適用於某些任務,例如記錄錯誤或應用程序的正常退出。

在所有其他情況下,建議您在最相關的地方處理異常。例如,如果您從您的應用進行Web服務調用,並且服務不可用,則應該在進行Web服務調用時處理該異常,而不是全局捕獲。這會提高代碼的可讀性,並且在全局級別做任何明智的事情都是不切實際的,因爲關於發生異常的位置信息很少。 (當然你必須堆棧​​跟蹤,但它沒有現成的程序操作)

但是,您可以通過一個處理程序連接到AppDomain.UnhandledException這也如同註釋通過@Jesse

+0

感謝迄今。關鍵是,我有一個龐大的類,有近千行的代碼,幾乎每個方法都需要一個try/catch塊,因爲套接字操作。我想,如果我使用像全局異常處理程序這樣的東西,它可能會提高可讀性......這就是爲什麼我問。此外,我認爲,這將是一個更好的編程風格,不捕捉本地異常。 – user1826831

+1

我想你有一個'千線'的課你應該知道它有什麼問題。 :)你應該嘗試堅持單一責任主管,一個班級只應處理一件事情。我會說你必須打破這個類,理想的事情是創建一個通用類來處理套接字調用,並在那裏處理異常,而不是。全球處理不是正確的風格,本地處理是要走的路。 – BuddhiP