工欲善其事,必先利其器。在做一個項目時必定要先做好調試除錯的預備在面向過程編程的時代都是以檢測返回的錯誤代碼來判定錯誤,可是這種方法的缺點是假如編寫某一操作的時候可能出現的錯誤代碼(比如說硬件操作)太多,那么最終用戶將會陷入倒無窮無盡的檢測代碼中,可能會是這個樣子
UINT err=Functionxx(…);
if(err==xxx)
…
if(err==xxx)
…
…
…
省略100行
只有這樣程序才能在出現意外的時候有所相應和恢復,但是由于錯誤處理太龐大了最終用戶很可能這樣
if(Functionxx()!=SUCEEDED)
exit(0);
這樣某些可能可以恢復的操作也無法幸免了,(比如說網絡連接超時,終止運行太過分了吧,只要彈出個對話框就行了)
在面向對象編程的時候,不可否認,很多人仍然還是這樣排錯的,其實各種面向對象的語言都提供了異常處理的手段(比如說Object Pascal,C++,本文以C++為例)
下面是我的關于異常的一些使專心得
對于各種用戶來說,并不是每一種錯誤都是他關心的,非凡是小組開發的時候比如某一模塊是關于文件操作的,那么編寫這個模塊的程序員只要注重關于文件操作失敗的異常就行了,而網絡模塊的程序員只要知道網絡出錯的錯誤處理就行了,因此,我們可以定義一個這樣的類
class CBasicException
{
CBasicException(…);
char* GetDescription();
UINT GetErrorCode();
…
};
然后再從這個類繼續幾個子類
CFileException,CNetException…
然后和具體某一類錯誤相關的具體的異常分別從上面的類里面繼續,比如文件打開失敗,空間不夠等等 可以從CFileException繼續,而連接超時等等可以從CNetException繼續,如此一來就將錯誤分類了整個類層次是這樣的
CBasicException
/ \
CFileException CNetException
/ \ / \
COpenFailed … CTimeOut … 進入討論組討論。
相關推薦:
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內蒙古 |