工欲善其事,必先利其器。在做一個(gè)項(xiàng)目時(shí)必定要先做好調(diào)試除錯(cuò)的預(yù)備在面向過(guò)程編程的時(shí)代都是以檢測(cè)返回的錯(cuò)誤代碼來(lái)判定錯(cuò)誤,可是這種方法的缺點(diǎn)是假如編寫某一操作的時(shí)候可能出現(xiàn)的錯(cuò)誤代碼(比如說(shuō)硬件操作)太多,那么最終用戶將會(huì)陷入倒無(wú)窮無(wú)盡的檢測(cè)代碼中,可能會(huì)是這個(gè)樣子
UINT err=Functionxx(…);
if(err==xxx)
…
if(err==xxx)
…
…
…
省略100行
只有這樣程序才能在出現(xiàn)意外的時(shí)候有所相應(yīng)和恢復(fù),但是由于錯(cuò)誤處理太龐大了最終用戶很可能這樣
if(Functionxx()!=SUCEEDED)
exit(0);
這樣某些可能可以恢復(fù)的操作也無(wú)法幸免了,(比如說(shuō)網(wǎng)絡(luò)連接超時(shí),終止運(yùn)行太過(guò)分了吧,只要彈出個(gè)對(duì)話框就行了)
在面向?qū)ο缶幊痰臅r(shí)候,不可否認(rèn),很多人仍然還是這樣排錯(cuò)的,其實(shí)各種面向?qū)ο蟮恼Z(yǔ)言都提供了異常處理的手段(比如說(shuō)Object Pascal,C++,本文以C++為例)
下面是我的關(guān)于異常的一些使專心得
對(duì)于各種用戶來(lái)說(shuō),并不是每一種錯(cuò)誤都是他關(guān)心的,非凡是小組開(kāi)發(fā)的時(shí)候比如某一模塊是關(guān)于文件操作的,那么編寫這個(gè)模塊的程序員只要注重關(guān)于文件操作失敗的異常就行了,而網(wǎng)絡(luò)模塊的程序員只要知道網(wǎng)絡(luò)出錯(cuò)的錯(cuò)誤處理就行了,因此,我們可以定義一個(gè)這樣的類
class CBasicException
{
CBasicException(…);
char* GetDescription();
UINT GetErrorCode();
…
};
然后再?gòu)倪@個(gè)類繼續(xù)幾個(gè)子類
CFileException,CNetException…
然后和具體某一類錯(cuò)誤相關(guān)的具體的異常分別從上面的類里面繼續(xù),比如文件打開(kāi)失敗,空間不夠等等
相關(guān)推薦:
2012年軟考系統(tǒng)分析師考試60天完美復(fù)習(xí)計(jì)劃
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |