《C面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章.ppt
《《C面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《《C面向?qū)ο蟪绦蛟O(shè)計(jì)》課件第8章.ppt(62頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、第14章 C++工具,14.1 異常處理 14.2 命名空間 14.3 使用早期的函數(shù)庫,在C++發(fā)展的后期,有時(shí)C++編譯系統(tǒng)根據(jù)實(shí)際工作的需要,增加了一些功能,作為工具來使用,其中主要有模板(包括函數(shù)模板和類模板)、異常處理、命名空間和運(yùn)行時(shí)類型識(shí)別,以幫助程序設(shè)計(jì)人員更方便地進(jìn)行程序的設(shè)計(jì)和調(diào)試工作。1997年ANSI C++委員會(huì)將它們納入了ANSI C++標(biāo)準(zhǔn),建議所有的C++編譯系統(tǒng)都能實(shí)現(xiàn)這些功能。這些工具是非常有用的,C++的使用者應(yīng)當(dāng)盡量使用這些工具。,程序編制者不僅要考慮程序沒有錯(cuò)誤的理想情況,更要考慮程序存在錯(cuò)誤時(shí)的情況,應(yīng)該能夠盡快地發(fā)現(xiàn)錯(cuò)誤,消除錯(cuò)誤。 程序中常見的錯(cuò)
2、誤有兩大類: 語法錯(cuò)誤和運(yùn)行錯(cuò)誤。在編譯時(shí),編譯系統(tǒng)能發(fā)現(xiàn)程序中的語法錯(cuò)誤。 有的程序雖然能通過編譯,也能投入運(yùn)行。但是在運(yùn)行過程中會(huì)出現(xiàn)異常,得不到正確的運(yùn)行結(jié)果,甚至導(dǎo)致程序不正常終止,或出現(xiàn)死機(jī)現(xiàn)象。這類錯(cuò)誤比較隱蔽,不易被發(fā)現(xiàn),往往耗費(fèi)許多時(shí)間和精力。這成為程序調(diào)試中的一個(gè)難點(diǎn)。,14.1 異常處理 14.1.1 異常處理的任務(wù),在設(shè)計(jì)程序時(shí),應(yīng)當(dāng)事先分析程序運(yùn)行時(shí)可能出現(xiàn)的各種意外的情況,并且分別制訂出相應(yīng)的處理方法,這就是程序的異常處理的任務(wù)。 在運(yùn)行沒有異常處理的程序時(shí),如果運(yùn)行情況出現(xiàn)異常,由于程序本身不能處理,程序只能終止運(yùn)行。如果在程序中設(shè)置了異常處理機(jī)制,則在運(yùn)行情況出現(xiàn)
3、異常時(shí),由于程序本身已規(guī)定了處理的方法,于是程序的流程就轉(zhuǎn)到異常處理代碼段處理。用戶可以指定進(jìn)行任何的處理。 需要說明,只要出現(xiàn)與人們期望的情況不同,都可以認(rèn)為是異常,并對(duì)它進(jìn)行異常處理。因此,所謂異常處理指的是對(duì)運(yùn)行時(shí)出現(xiàn)的差錯(cuò)以及其他例外情況的處理。,在一個(gè)小的程序中,可以用比較簡(jiǎn)單的方法處理異常。但是在一個(gè)大的系統(tǒng)中,如果在每一個(gè)函數(shù)中都設(shè)置處理異常的程序段,會(huì)使程序過于復(fù)雜和龐大。因此,C++采取的辦法是: 如果在執(zhí)行一個(gè)函數(shù)過程中出現(xiàn)異常,可以不在本函數(shù)中立即處理,而是發(fā)出一個(gè)信息,傳給它的上一級(jí)(即調(diào)用它的函數(shù)),它的上級(jí)捕捉到這個(gè)信息后進(jìn)行處理。如果上一級(jí)的函數(shù)也不能處理,就再傳
4、給其上一級(jí),由其上一級(jí)處理。如此逐級(jí)上送,如果到最高一級(jí)還無法處理,最后只好異常終止程序的執(zhí)行。,14.1.2 異常處理的方法,這樣做使異常的發(fā)現(xiàn)與處理不由同一函數(shù)來完成。好處是使底層的函數(shù)專門用于解決實(shí)際任務(wù),而不必再承擔(dān)處理異常的任務(wù),以減輕底層函數(shù)的負(fù)擔(dān),而把處理異常的任務(wù)上移到某一層去處理。這樣可以提高效率。 C++處理異常的機(jī)制是由3個(gè)部分組成的,即檢查(try)、拋出(throw)和捕捉(catch)。把需要檢查的語句放在try塊中,throw用來當(dāng)出現(xiàn)異常時(shí)發(fā)出一個(gè)異常信息,而catch則用來捕捉異常信息,如果捕捉到了異常信息,就處理它。,例14.1 給出三角形的三邊a,b,c,
5、求三角形的面積。只有a+bc,b+ca,c+ab時(shí)才能構(gòu)成三角形。設(shè)置異常處理,對(duì)不符合三角形條件的輸出警告信息,不予計(jì)算。 先寫出沒有異常處理時(shí)的程序: #include #include using namespace std; int main( ) double triangle(double,double,double); double a,b,c; cinabc; while(a0 , double triangle(double a,double b,double c) double area; double s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b
6、)*(s-c)); return area; 運(yùn)行情況如下: 6 5 4(輸入a,b,c的值) 9.92157 (輸出三角形的面積) 1 1.5 2 (輸入a,b,c的值) 0.726184 (輸出三角形的面積) 1 2 1 (輸入a,b,c的值) 0 (輸出三角形的面積,此結(jié)果顯然不對(duì),因?yàn)椴皇侨切? 1 0 6 (輸入a,b,c的值) (結(jié)束),修改程序,在函數(shù)traingle中對(duì)三角形條件進(jìn)行檢查,如果不符合三角形條件,就拋出一個(gè)異常信息,在主函數(shù)中的try-catch塊中調(diào)用traingle函數(shù),檢測(cè)有無異常信息,并作相應(yīng)處理。修改后的程序如下: #
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案