2010-07-09 95 views
0

我想用一個異常處理程序來處理由C++類引發的所有異常。有沒有簡單的方法,而不是將代碼添加到每個成員函數?如何爲一個類添加一個異常處理程序?

謝謝

+0

我不這麼認爲,至少不是沒有某種代碼生成。但是很難證明是否定的(尤其是使用C++),所以我只是發表評論。 :> IIRC,確保課程合同得到滿足是每種方法的責任。 – Cogwheel 2010-07-09 02:29:04

+0

您可能想要閱讀對_「爲什麼我不應該在try-catch中包裝每個塊」的響應_(http://stackoverflow.com/questions/2737328/why-should-i-not-wrap-every-塊中-的try-catch /)。有很多不同的方式來處理C++中的異常。 – 2010-07-09 10:47:42

回答

3

有沒有簡單的方法,你應該做的。

例外的一點是,他們處理例外條件 - 即:意外的東西。而且它們會導致執行程序冒泡到知道如何處理它們的代碼。如果你的班上有一個應該處理所有例外的定義點,要麼你知道他們會被拋出並想要吞下他們(讀:你濫用例外),或者你不知道他們會去被拋出,只是想吞下它們來隱藏錯誤(閱讀:你正在創建一個調試器的噩夢和濫用異常)。

如果你不能輕易處理異常,就讓它拋出。不要吞下去,不要假裝它沒有發生。

+1

+1看到'嘗試/抓住'塊到處都讓我的頭髮站立。如果你沒有處理這個異常,那就讓它上去,直到有人處理它爲止。 – 2010-07-09 02:53:03

0

我完全同意cHao。

如果你只是想確保一些微不足道的異常不會導致你的程序崩潰,那麼例如,如果你正在編寫一個GUI應用程序,你可以將你的事件循環包裝在一個try/catch塊中,然後根據例外情況,決定記錄它,告訴用戶,請求發送錯誤報告的權限,關閉程序(很好,如果你自動重新啓動它...)等等。(如果它完全從你的事件循環沒有被捕獲,你可能想知道它!)

相關問題