2012軟件水平考試解析之異常的使用

字號(hào):

2012年軟件水平考試解析之異常的使用心得
    工欲善其事,必先利其器。在做一個(gè)項(xiàng)目時(shí)必定要先做好調(diào)試除錯(cuò)的預(yù)告在面向過(guò)程編程的時(shí)代都是以檢測(cè)返回的錯(cuò)誤代碼來(lái)剖斷錯(cuò)誤,可是這種體例的錯(cuò)誤謬誤是假如編寫(xiě)某一操作的時(shí)辰可能呈現(xiàn)的錯(cuò)誤代碼(好比說(shuō)硬件操作)太多,那么最終用戶(hù)將會(huì)陷入倒無(wú)限無(wú)盡的檢測(cè)代濾魷脯可能會(huì)是這個(gè)樣子
    UINT err=Functionxx(…);
    if(err==xxx)
    …
    if(err==xxx)
    …
    …
    …
    省略100行
    只有這樣軌范才能在呈現(xiàn)意外的時(shí)辰有所響應(yīng)和恢復(fù),可是因?yàn)殄e(cuò)誤措置太復(fù)雜了最終用戶(hù)很可能這樣
    if(Functionxx()!=SUCEEDED)
    exit(0);
    這樣某些可能可以恢復(fù)的操作也無(wú)法幸免了,(好比說(shuō)收集毗連超時(shí),終止運(yùn)行過(guò)分度了吧,只要彈出個(gè)對(duì)話框就行了)
    在面向?qū)ο缶幊痰臅r(shí)辰,不成否認(rèn),良多人仍然仍是這樣排錯(cuò)的,其實(shí)各類(lèi)面向?qū)ο蟮恼f(shuō)話都供給了異常措置的手段(好比說(shuō)Object Pascal,C++,本文以C++為例)
    下面是我的關(guān)于異常的一些使專(zhuān)心得
    對(duì)于各類(lèi)用戶(hù)來(lái)說(shuō),并不是每一種錯(cuò)誤都是他關(guān)心的,不凡是小組開(kāi)發(fā)的時(shí)辰好比某一模塊是關(guān)于文件操作的,那么編寫(xiě)這個(gè)模塊的軌范員只要注重關(guān)于文件操作失蹤敗的異常就行了,而收集模塊的軌范員只要知道收集犯錯(cuò)的錯(cuò)誤措置就行了,是以,我們可以界說(shuō)一個(gè)這樣的類(lèi)
    class CBasicException
    {
    CBasicException(…);
    char* GetDescription();
    UINT GetErrorCode();
    …
    };
    然后再?gòu)倪@個(gè)類(lèi)繼續(xù)幾個(gè)子類(lèi)
    CFileException,CNetException…
    然后和具體某一類(lèi)錯(cuò)誤相關(guān)的具體的異常分袂從膳縵沔的類(lèi)瑯縵沔繼續(xù),好交鋒件打開(kāi)失蹤敗,空間不夠等等