C++異常處理結(jié)構(gòu)題目及答案_第1頁(yè)
C++異常處理結(jié)構(gòu)題目及答案_第2頁(yè)
C++異常處理結(jié)構(gòu)題目及答案_第3頁(yè)
C++異常處理結(jié)構(gòu)題目及答案_第4頁(yè)
C++異常處理結(jié)構(gòu)題目及答案_第5頁(yè)
已閱讀5頁(yè),還剩5頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C++異常處理結(jié)構(gòu)題目及答案姓名:____________________

一、單項(xiàng)選擇題(每題2分,共10題)

1.下列關(guān)于C++異常處理的描述,不正確的是:

A.異常處理可以增強(qiáng)程序的健壯性

B.throw語(yǔ)句用于拋出一個(gè)異常

C.try塊中可以沒(méi)有catch塊

D.catch塊可以捕獲多個(gè)類(lèi)型的異常

2.以下關(guān)于C++異常傳播的描述,正確的是:

A.當(dāng)一個(gè)異常發(fā)生時(shí),程序會(huì)立即退出

B.異常會(huì)從發(fā)生異常的函數(shù)開(kāi)始,逐層向上傳播

C.如果try塊中沒(méi)有catch塊,程序會(huì)崩潰

D.catch塊可以捕獲父類(lèi)異常,但不能捕獲子類(lèi)異常

3.以下關(guān)于C++異常處理中異常類(lèi)的描述,不正確的是:

A.異常類(lèi)可以繼承自標(biāo)準(zhǔn)庫(kù)中的標(biāo)準(zhǔn)異常類(lèi)

B.用戶(hù)可以自定義異常類(lèi)

C.異常類(lèi)必須有一個(gè)構(gòu)造函數(shù)

D.異常類(lèi)可以有成員變量和成員函數(shù)

4.以下關(guān)于C++異常處理中try-catch結(jié)構(gòu)的描述,不正確的是:

A.try塊用于包含可能拋出異常的代碼

B.catch塊用于捕獲并處理異常

C.可以在同一個(gè)catch塊中捕獲多個(gè)類(lèi)型的異常

D.catch塊可以有多個(gè),但順序無(wú)關(guān)緊要

5.以下關(guān)于C++異常處理中finally塊的描述,不正確的是:

A.finally塊用于執(zhí)行無(wú)論是否發(fā)生異常都會(huì)執(zhí)行的代碼

B.finally塊必須位于try或catch塊的后面

C.finally塊可以單獨(dú)使用

D.finally塊中不能拋出異常

6.以下關(guān)于C++異常處理中異常類(lèi)型繼承的描述,不正確的是:

A.子類(lèi)異??梢圆东@父類(lèi)異常

B.父類(lèi)異常不能捕獲子類(lèi)異常

C.異常類(lèi)型繼承遵循多態(tài)原則

D.異常類(lèi)型繼承遵循類(lèi)型兼容原則

7.以下關(guān)于C++異常處理中異常的傳播方向的描述,不正確的是:

A.異常從發(fā)生異常的函數(shù)開(kāi)始,逐層向上傳播

B.當(dāng)try塊中沒(méi)有捕獲到異常時(shí),異常會(huì)傳播到調(diào)用該函數(shù)的函數(shù)

C.當(dāng)catch塊中捕獲了異常后,異常會(huì)停止傳播

D.當(dāng)catch塊中拋出新的異常后,異常會(huì)繼續(xù)向上傳播

8.以下關(guān)于C++異常處理中異常的捕獲和處理的描述,不正確的是:

A.catch塊可以捕獲多個(gè)類(lèi)型的異常

B.catch塊可以捕獲同一類(lèi)型的異常

C.可以在同一個(gè)catch塊中捕獲多個(gè)異常

D.catch塊必須捕獲所有可能發(fā)生的異常

9.以下關(guān)于C++異常處理中異常的捕獲和處理的描述,不正確的是:

A.當(dāng)catch塊捕獲到異常后,程序繼續(xù)執(zhí)行catch塊后面的代碼

B.如果catch塊中沒(méi)有代碼,則捕獲到異常后程序會(huì)立即退出

C.catch塊中可以?huà)伋鲂碌漠惓?/p>

D.catch塊中可以修改異常對(duì)象

10.以下關(guān)于C++異常處理的描述,不正確的是:

A.異常處理可以增強(qiáng)程序的健壯性

B.throw語(yǔ)句用于拋出一個(gè)異常

C.try塊中可以沒(méi)有catch塊

D.catch塊可以捕獲任意類(lèi)型的異常

二、多項(xiàng)選擇題(每題3分,共10題)

1.在C++中,以下哪些是有效的異常處理結(jié)構(gòu)?

A.try-catch

B.try-finally

C.try-throw

D.try-catch-finally

2.以下哪些情況會(huì)觸發(fā)異常?

A.運(yùn)行時(shí)錯(cuò)誤

B.系統(tǒng)錯(cuò)誤

C.程序邏輯錯(cuò)誤

D.編譯時(shí)錯(cuò)誤

3.以下關(guān)于C++異常處理中異常類(lèi)的描述,正確的是:

A.異常類(lèi)可以繼承自標(biāo)準(zhǔn)庫(kù)中的標(biāo)準(zhǔn)異常類(lèi)

B.用戶(hù)可以自定義異常類(lèi)

C.異常類(lèi)必須有一個(gè)構(gòu)造函數(shù)

D.異常類(lèi)可以有成員變量和成員函數(shù)

4.在C++中,以下哪些關(guān)鍵字用于聲明異常?

A.throw

B.try

C.catch

D.finally

5.以下關(guān)于C++異常處理中try塊的描述,正確的是:

A.try塊用于包含可能拋出異常的代碼

B.try塊可以單獨(dú)使用

C.try塊中可以沒(méi)有catch塊

D.try塊中可以沒(méi)有finally塊

6.以下關(guān)于C++異常處理中catch塊的描述,正確的是:

A.catch塊用于捕獲并處理異常

B.可以在同一個(gè)catch塊中捕獲多個(gè)類(lèi)型的異常

C.catch塊可以捕獲父類(lèi)異常

D.catch塊可以捕獲子類(lèi)異常

7.以下關(guān)于C++異常處理中finally塊的描述,正確的是:

A.finally塊用于執(zhí)行無(wú)論是否發(fā)生異常都會(huì)執(zhí)行的代碼

B.finally塊必須位于try或catch塊的后面

C.finally塊可以單獨(dú)使用

D.finally塊中不能拋出異常

8.在C++中,以下哪些是C++標(biāo)準(zhǔn)庫(kù)中定義的異常類(lèi)?

A.std::exception

B.std::runtime_error

C.std::logic_error

D.std::out_of_range

9.以下關(guān)于C++異常處理中異常傳播的描述,正確的是:

A.異常會(huì)從發(fā)生異常的函數(shù)開(kāi)始,逐層向上傳播

B.當(dāng)try塊中沒(méi)有捕獲到異常時(shí),異常會(huì)傳播到調(diào)用該函數(shù)的函數(shù)

C.當(dāng)catch塊中捕獲了異常后,異常會(huì)停止傳播

D.當(dāng)catch塊中拋出新的異常后,異常會(huì)繼續(xù)向上傳播

10.以下關(guān)于C++異常處理中異常處理的最佳實(shí)踐,正確的是:

A.盡量在異常處理中避免復(fù)雜的邏輯

B.使用異常來(lái)處理程序中的錯(cuò)誤情況

C.避免在catch塊中拋出新的異常

D.在設(shè)計(jì)異常類(lèi)時(shí),遵循異常類(lèi)繼承的原則

三、判斷題(每題2分,共10題)

1.在C++中,一個(gè)try塊可以包含多個(gè)catch塊。()

2.如果一個(gè)函數(shù)拋出一個(gè)異常,但沒(méi)有對(duì)應(yīng)的catch塊來(lái)捕獲它,程序會(huì)崩潰。()

3.在C++中,finally塊總是被執(zhí)行,無(wú)論是否發(fā)生異常。()

4.在C++中,可以捕獲基類(lèi)異常來(lái)處理派生類(lèi)的異常。()

5.C++標(biāo)準(zhǔn)庫(kù)中的std::exception類(lèi)是所有異常類(lèi)的基類(lèi)。()

6.異常處理可以減少程序中的錯(cuò)誤數(shù)量。()

7.在C++中,異??梢钥缇幾g單元傳播。()

8.如果一個(gè)catch塊中拋出了新的異常,原來(lái)的異常會(huì)被新的異常替換。()

9.在C++中,可以使用多個(gè)catch塊來(lái)捕獲同一類(lèi)型的異常。()

10.在C++中,finally塊可以包含return語(yǔ)句。()

四、簡(jiǎn)答題(每題5分,共6題)

1.簡(jiǎn)述C++異常處理的基本結(jié)構(gòu)。

2.解釋C++中try塊、catch塊和finally塊的作用。

3.如何自定義一個(gè)異常類(lèi)?

4.描述C++中異常的傳播機(jī)制。

5.解釋為什么在C++中應(yīng)該謹(jǐn)慎使用異常處理。

6.列舉至少三個(gè)在C++中使用異常處理的優(yōu)勢(shì)。

試卷答案如下

一、單項(xiàng)選擇題(每題2分,共10題)

1.C.try塊中可以沒(méi)有catch塊

解析思路:選項(xiàng)A、B、D都是關(guān)于異常處理的正確描述,而選項(xiàng)C是錯(cuò)誤的,因?yàn)榧词箃ry塊中沒(méi)有catch塊,程序也不會(huì)崩潰,只是異常沒(méi)有被捕獲和處理。

2.B.異常會(huì)從發(fā)生異常的函數(shù)開(kāi)始,逐層向上傳播

解析思路:選項(xiàng)A、C、D都是錯(cuò)誤的描述,因?yàn)楫惓2粫?huì)立即退出程序,不會(huì)從函數(shù)開(kāi)始逐層向上傳播,也不會(huì)在catch塊中拋出異常后立即停止傳播。

3.C.異常類(lèi)必須有一個(gè)構(gòu)造函數(shù)

解析思路:選項(xiàng)A、B、D都是關(guān)于異常類(lèi)的正確描述,而選項(xiàng)C是錯(cuò)誤的,因?yàn)楫惓n?lèi)可以不提供構(gòu)造函數(shù)。

4.D.catch塊可以捕獲任意類(lèi)型的異常

解析思路:選項(xiàng)A、B、C都是關(guān)于catch塊的錯(cuò)誤描述,而選項(xiàng)D是正確的,因?yàn)閏atch塊可以捕獲任意類(lèi)型的異常。

5.B.finally塊用于執(zhí)行無(wú)論是否發(fā)生異常都會(huì)執(zhí)行的代碼

解析思路:選項(xiàng)A、C、D都是關(guān)于finally塊的錯(cuò)誤描述,而選項(xiàng)B是正確的,因?yàn)閒inally塊確保無(wú)論是否發(fā)生異常,其中的代碼都會(huì)被執(zhí)行。

6.A.子類(lèi)異??梢圆东@父類(lèi)異常

解析思路:選項(xiàng)B、C、D都是關(guān)于異常類(lèi)型繼承的錯(cuò)誤描述,而選項(xiàng)A是正確的,因?yàn)樽宇?lèi)異常可以捕獲父類(lèi)異常。

7.A.異常從發(fā)生異常的函數(shù)開(kāi)始,逐層向上傳播

解析思路:選項(xiàng)B、C、D都是關(guān)于異常傳播的錯(cuò)誤描述,而選項(xiàng)A是正確的,因?yàn)楫惓陌l(fā)生異常的函數(shù)開(kāi)始,逐層向上傳播。

8.A.當(dāng)一個(gè)異常發(fā)生時(shí),程序會(huì)立即退出

解析思路:選項(xiàng)B、C、D都是關(guān)于異常處理的錯(cuò)誤描述,而選項(xiàng)A是錯(cuò)誤的,因?yàn)楫惓2粫?huì)導(dǎo)致程序立即退出。

9.B.catch塊可以捕獲同一類(lèi)型的異常

解析思路:選項(xiàng)A、C、D都是關(guān)于catch塊的錯(cuò)誤描述,而選項(xiàng)B是正確的,因?yàn)榭梢栽谕粋€(gè)catch塊中捕獲同一類(lèi)型的異常。

10.A.異常處理可以增強(qiáng)程序的健壯性

解析思路:選項(xiàng)B、C、D都是關(guān)于異常處理的正確描述,而選項(xiàng)A是錯(cuò)誤的,因?yàn)楫惓L幚泶_實(shí)可以增強(qiáng)程序的健壯性。

二、多項(xiàng)選擇題(每題3分,共10題)

1.A.try-catchB.try-finallyD.try-catch-finally

解析思路:選項(xiàng)A、B、D都是有效的異常處理結(jié)構(gòu),而選項(xiàng)C是錯(cuò)誤的,因?yàn)閠hrow不是結(jié)構(gòu)的一部分。

2.A.運(yùn)行時(shí)錯(cuò)誤B.系統(tǒng)錯(cuò)誤C.程序邏輯錯(cuò)誤

解析思路:選項(xiàng)A、B、C都是可能觸發(fā)異常的情況。

3.A.異常類(lèi)可以繼承自標(biāo)準(zhǔn)庫(kù)中的標(biāo)準(zhǔn)異常類(lèi)B.用戶(hù)可以自定義異常類(lèi)C.異常類(lèi)必須有一個(gè)構(gòu)造函數(shù)D.異常類(lèi)可以有成員變量和成員函數(shù)

解析思路:所有選項(xiàng)都是關(guān)于異常類(lèi)的正確描述。

4.A.throwB.tryC.catch

解析思路:選項(xiàng)A、B、C都是用于聲明異常的關(guān)鍵字。

5.A.try塊用于包含可能拋出異常的代碼B.try塊可以單獨(dú)使用C.try塊中可以沒(méi)有catch塊D.try塊中可以沒(méi)有finally塊

解析思路:所有選項(xiàng)都是關(guān)于try塊的正確描述。

6.A.catch塊用于捕獲并處理異常B.可以在同一個(gè)catch塊中捕獲多個(gè)類(lèi)型的異常C.catch塊可以捕獲父類(lèi)異常D.catch塊可以捕獲子類(lèi)異常

解析思路:所有選項(xiàng)都是關(guān)于catch塊的正確描述。

7.A.finally塊用于執(zhí)行無(wú)論是否發(fā)生異常都會(huì)執(zhí)行的代碼B.finally塊必須位于try或catch塊的后面C.finally塊可以單獨(dú)使用D.finally塊中不能拋出異常

解析思路:所有選項(xiàng)都是關(guān)于finally塊的正確描述。

8.A.std::exceptionB.std::runtime_errorC.std::logic_errorD.std::out_of_range

解析思路:所有選項(xiàng)都是C++標(biāo)準(zhǔn)庫(kù)中定義的異常類(lèi)。

9.A.異常會(huì)從發(fā)生異常的函數(shù)開(kāi)始,逐層向上傳播B.當(dāng)try塊中沒(méi)有捕獲到異常時(shí),異常會(huì)傳播到調(diào)用該函數(shù)的函數(shù)C.當(dāng)catch塊中捕獲了異常后,異常會(huì)停止傳播D.當(dāng)catch塊中拋出新的異常后,異常會(huì)繼續(xù)向上傳播

解析思路:所有選項(xiàng)都是關(guān)于異常傳播的正確描述。

10.A.盡量在異常處理中避免復(fù)雜的邏輯B.使用異常來(lái)處理程序中的錯(cuò)誤情況C.避免在catch塊中拋出新的異常D.在設(shè)計(jì)異常類(lèi)時(shí),遵循異常類(lèi)繼承的原則

解析思路:所有選項(xiàng)都是關(guān)于C++異常處理的最佳實(shí)踐。

三、判斷題(每題2分,共10題)

1.×

解析思路:try塊可以沒(méi)有catch塊,程序不會(huì)崩潰。

2.×

解析思路:如果沒(méi)有對(duì)應(yīng)的catch塊來(lái)捕獲異常,異常會(huì)傳播到調(diào)用該函數(shù)的函數(shù),而不是立即退出。

3.√

解析思路:finally塊確保無(wú)論是否發(fā)生異常,其中的代碼都會(huì)被執(zhí)行。

4.√

解析思路:子類(lèi)異??梢圆东@父類(lèi)異常,這是多態(tài)性的體現(xiàn)。

5.√

解析思路:std::ex

溫馨提示

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

評(píng)論

0/150

提交評(píng)論