2011-04-05 40 views
1

我正在構建一個信使庫,並且我有一個關於如何正確向用戶報告特定錯誤的問題。好的把EventArgs中的異常?

主Messenger類有兩種狀態 - 登錄和註銷。

內部發生的錯誤可能導致客戶端註銷。

例如,DisconnectException(如果SocketException在內部發生),或者如果客戶端無法完成由Messenger服務器發出的挑戰,則爲ChallengeFailedException。

是否可以(或建議)將異常傳遞給LogoutEventArgs中的用戶?例如 - LogoutEventArgs.Exception

還是有更理想的方式來處理這個問題嗎?

回答

2

如果不希望將異常(即,它確實是一個出色的情況),那麼你或許應該只是讓拋出異常,以便用戶可以使用語句來處理任何特殊例外類型。

如果異常是從另一個線程引發的,則可以將其包裝在另一個異常中並將其放在調用線程上。

如果這是一個預期的常見錯誤條件,那麼它取決於用戶在這種情況下應該做什麼。類似於枚舉或自定義錯誤類可能比僅在EventArgs對象中插入異常要好。自定義對象可以也包括對對象的引用。

+0

我會拋出它,但它發生在一個線程 – NoPyGod 2011-04-05 04:49:01

+0

我在這種情況下添加了一個建議。 – 2011-04-05 06:41:59

2

我有一個類可以吞噬一些已知的異常,如sql server超時。這是我的客戶不需要處理這個問題,我的課程捕捉到它並返回錯誤枚舉。 我只是發現了捕獲的異常,因此我的客戶可以選擇將它們記錄下來。我不希望我的類有日誌依賴性。