第11章習題答案_第1頁
第11章習題答案_第2頁
第11章習題答案_第3頁
第11章習題答案_第4頁
第11章習題答案_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、十一章 課后習題答案一、選擇題1. 下列關于異常的敘述錯誤的是( A )。 A編譯錯屬于異常,可以拋出B運行錯屬于異常 C硬件故障也可當異常拋出D只要是編程者認為是異常的都可當異常拋出2. 下列敘述錯誤的是( B )。 Athrow語句須書寫在時語句塊中 Bthrow語句必須在try語句塊中直接運行或通過調用函數(shù)運行 C一個程序中可以有try語句而沒有throw語句Dthrow語句拋出的異??梢圆槐徊东@3. 關于函數(shù)聲明 float fun(int a,int b)throw,下列敘述正確的是( B )。 A表明函數(shù)拋出float類型異常 B表明函數(shù)拋出任何類型異常 C表明函數(shù)不拋出任何類型異

2、常D表明函數(shù)實際拋出的異常4. 下列敘述錯誤的是(C)。 Acatch()語句可捕獲所有類型的異常 B一個try語句可以有多個catch語句 Ccatch()語句可以放在catch語句組的中間D程序中try語句與catch語句是一個整體,缺一不可二、簡答題1. 什么是命名空間,怎樣定義命名空間?答: 命名空間是一個保持唯一名稱的區(qū)域,其實質是一個作用域。語法為: namespace A /定義一個命名空間A int a; float b; void f() 其中namespace為定義的關鍵字,A為命名空間的名字。2. 什么是異常,什么是異常處理?答:在編寫程序時,總是會不可避免地遇到一些問題

3、。尤其是在設計一個類時,總要包含一些錯誤處理。C+提供了異常處理機制,它把錯誤檢查和錯誤處理分開。如設計類專門檢查各種可能出現(xiàn)的錯誤, 類的使用者則提供具體的錯誤處理程序。3. C+異常處理處理有哪些特點?答:異常處理的思路是:發(fā)現(xiàn)錯誤的函數(shù)可以不具有錯誤處理能力。這個函數(shù)會引發(fā)一個異常,希望它的調用者能捕獲這個異常并處理這個錯誤。如果調用者也不能處理這個錯誤,還可以聯(lián)系給上層調用者處理。這種傳播會一直繼續(xù)到異常被處理為止。這樣低層的函數(shù)可以著重解決具體問題,上層調用者來考慮對不同的異常進行相應的處理。4. C+異常處理中怎樣處理構造與析構的關系?答:C+異常處理的真正能力,不僅在于它能夠處理

4、不同類型的異常,同時它具有異常拋擲前構造的所有局部對象自動釋放能力。程序中如果在try塊中定義了類對象,當出現(xiàn)異常時,從try塊開始到拋出異常之間構造的所有對象進行析構,析構的順序與構造的順序相反。5. 請簡要寫一個c+異常處理的例子,來說明try, catch和 throw之間的關系?答: try int m,n; cinmn; if(n = 0) throw n; cout”m/n = ”m/nendl;catch(int) cout”Error of dividing zero”endl; 上面是一個處理除零異常的例子,必須使用try語句來捕獲異常。在執(zhí)行try后的復合語句中或在一個函數(shù)

5、調用中出現(xiàn)異常,由throw拋出異常,用catch語句來捕獲異常和處理異常,catch語句總是跟在一個try程序塊后面處理try程序塊產(chǎn)生的異常。三、編程題1. 設計一個異常Ex抽象類,在此基礎上派生出一個OutOfIndex類來響應下標越界,一個RangeError類來響應輸入的數(shù)不在指定的范圍內。答:#include #include using namespace std;class EXpublic:virtual void printError()coutsuper.printError()endl;class OutOfIndex:public EXint i;public:voi

6、d printError()coutError!Out Of Index at ii=i;class RangeError:public EXpublic:void printError()coutError!Out Of Range!=0&i100) return ai;elseOutOfIndex o;o.setI(i);throw &o;void f1()coutPlease input a integer number between 1 and 1000:n;if (n1000|n1)throw &RangeError();void f2()int index;coutPlease

7、input a index of the array.index;Array a;coutaindex = aindexprintError();return 0;2. 定義一個異常類Ex,有成員函數(shù)reason(),用來顯示異常的類型。定義一個函數(shù)fun1()觸發(fā)異常,在主函數(shù)try模塊中調用fun1(),在catch模塊中捕獲異常,觀察程序執(zhí)行流程。答:#include #include using namespace std;class EXpublic:virtual void reason()coutThe reason of the exception is EX.reason()

8、;return 0;3. 定義一個Array類,重載數(shù)組下標操作符,通過拋出異常使之具有判斷與處理下標越界功能。答:#include #include using namespace std;class EXpublic:virtual void reason()coutThe reason of the exception is out of index.=0&isize)return pi;elsethrow &EX();int main()tryArray a(50);a1=10;couta1 = a1reason();return 0;4. 編寫一個程序,求一元二次方程式ax2+bx+c=0的實根,如果方程沒有實根,則輸出有關警告信息。答:#include #include #include using namespace std;class EXpublic:virtual void reason()coutThere is no solid solution.abc;double delta = b*b-4*a*c;if (delta0)t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論