西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁(yè) 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

C與C++中的異常處理

PDF 高清文字版
  • C與C++中的異常處理PDF 高清文字版
  • 軟件大小:465KB
  • 更新時(shí)間:2010-11-26 17:33
  • 軟件語(yǔ)言:中文
  • 軟件廠商:
  • 軟件類別:國(guó)產(chǎn)軟件 / 免費(fèi)軟件 / 電子教程
  • 軟件等級(jí):3級(jí)
  • 應(yīng)用平臺(tái):WinXP, WinAll
  • 官方網(wǎng)站:http://m.elephantinaurance.com/
  • 應(yīng)用備案:
好評(píng):50%
壞評(píng):50%

軟件介紹

1.1 異常分類
基于Dr. GUI的建議,我把我的第一個(gè)專欄投入到“程序異!钡南盗猩稀N艺J(rèn)識(shí)到,“exception”這個(gè)術(shù)語(yǔ)有些不明確并和上下文相關(guān),尤其是C++標(biāo)準(zhǔn)異常(C++ standard exceptions)和Microsoft的結(jié)構(gòu)化異常(structured exception handling) 。不幸的的是,“異!币辉~太常見了,隨時(shí)出現(xiàn)在語(yǔ)言的標(biāo)準(zhǔn)和常見的編程文獻(xiàn)中。因?yàn)椴幌雱?chuàng)造一個(gè)新名詞,所以我將盡力在此系列的各部分中明確我對(duì)“異!钡挠梅ā
z Part 1概述通常意義上的異常的性質(zhì),和標(biāo)準(zhǔn)C庫(kù)提供的處理它們的方法。
z Part 2縱覽Microsoft 對(duì)這些標(biāo)準(zhǔn)C庫(kù)方法的擴(kuò)展:專門的宏和結(jié)構(gòu)化異常處理。
z Part 3及其余將致力于標(biāo)準(zhǔn)C++異常處理體系。
(C語(yǔ)言使用者可能在Part2后放棄,但我鼓勵(lì)你堅(jiān)持到底;我所提出的許多點(diǎn)子同樣適用于C,雖然不是很直接。 )
本質(zhì)上看,程序異常是指出現(xiàn)了一些很少發(fā)生的或出乎意料的狀態(tài),通常顯示了一個(gè)程序錯(cuò)誤或要求一個(gè)必須提供的回應(yīng)。不能滿足這個(gè)回應(yīng)經(jīng)常造成程序功能削弱或死亡,有時(shí)導(dǎo)致整個(gè)系統(tǒng)和它一起down掉。不幸的是,試圖使用傳統(tǒng)的防護(hù)方法來編制健壯的代碼經(jīng)常只是將一個(gè)問題(意外崩潰)換成了另外一個(gè)問題(更混亂的設(shè)計(jì)和代碼) 。
1. 異常和標(biāo)準(zhǔn) C 對(duì)它的支持2
2. Microsoft 對(duì)異常處理方法的擴(kuò)展...12
3. 標(biāo)準(zhǔn) C++異常處理的基本語(yǔ)法和語(yǔ)義....27
4. 實(shí)例剖析 EH.33
5. C++的 new 和delete 操作時(shí)的異常處理....40
6. Microsoft 對(duì)于的實(shí)現(xiàn)版本中的異常處理.47
7. 部分構(gòu)造及 placement delete....53
8. 自動(dòng)刪除,類屬 new 和delete、placement new 和 placement delete 59
9. placement new 和 placement delete,及處理構(gòu)造函數(shù)拋出的異常68
10. 從私有子對(duì)象中產(chǎn)生的異常....74
11. 異常規(guī)格申明...83
12. unexpected()的實(shí)現(xiàn)上固有的限制..89
13. 異常安全.94
14. 模板安全....100
15. 模板安全(續(xù))..107
16. 指導(dǎo)方針....113
17. C++異常和 Visual C++ SEH 的混合使用..120

然后,創(chuàng)建一個(gè)新的Visual C++控制臺(tái)項(xiàng)目,并包含EH.CPP為唯一的源文件。使用默認(rèn)項(xiàng)目屬性,但打開“生成源碼/匯編混合的.asm文件”選項(xiàng)。編譯出Debug版本。在我機(jī)器上,得到的EH.exe是23,040字節(jié)。
事件鏈:

第四層try塊觸發(fā)了一個(gè)異常。這導(dǎo)致順嵌套鏈向上搜索,查找愿意捕獲這個(gè)異常的異常過濾器。

碰到的第一個(gè)異常過濾器(在第三層)得出了EXCEPTION_CONTINUE_SEARCH,所以拒絕捕獲這個(gè)異常。繼續(xù)搜索下一個(gè)異常處理函數(shù)。

碰到的下一個(gè)異常過濾器(在第一層)得出了EXCEPTION_EXECUTE_HANDLER。這次,這個(gè)過濾器捕獲這個(gè)異常。因?yàn)樗蟮玫闹,異常將被終止。

控制權(quán)回到異常發(fā)生點(diǎn),開始退棧。沿路所有的終止處理函數(shù)被運(yùn)行,并且所有的處理函數(shù)都知道異常終止發(fā)生了。一直退棧到控制權(quán)回到捕獲異常的異常處理函數(shù)(在第一層)。在退棧時(shí),只有終止處理函數(shù)被執(zhí)行,中間的其它代碼被忽略。

控制權(quán)一回到捕獲異常的異常處理函數(shù)(在第一層),將以正常狀態(tài)繼續(xù)執(zhí)行。

注意,控制權(quán)在同一嵌套層傳遞了兩次:第一次異常過濾表達(dá)式求值,第二次在退棧和執(zhí)行終止處理函數(shù)時(shí)。這造成了一種危害可能:如果一個(gè)異常過濾表達(dá)式以某種終止處理函數(shù)不期望的方式修改了的什么。一個(gè)基本原則就是,你的異常過濾器不能有副作用;如果有,則必須為你的終止處理函數(shù)保存它們。

其他版本下載

發(fā)表評(píng)論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評(píng)論 > 字?jǐn)?shù): 0/500

TOP
軟件下載