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