福建工程学院《第八章异常习题- 答案》

更新时间:2024-04-02 09:59:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第8章 异常处理习题 1

第8章 异常处理习题

一、 填空题

1、 C++程序将可能发生异常的程序块放在 (5) 中,紧跟其后可放置若干对应的

(2) ,在前面所说的块中或块所调用的函数中应该有对应的 (4) ,由它在不正常时抛出 (1) ,如与某一条 (7) 类型相匹配,则执行该语句。该语句执行完后,如未退出程序,则执行 (6) 。如没有匹配的语句,则交C++标准库中的 (3) 处理。

(1)异常

(2)catch子句 (3)terminate() (4)throw表达式 (5)try块

(6)后面的一条语句 (7)catch子句

2、 throw表达式的行为有点像函数的 (2) ,而catch子句有点像函数的 (1) 。

函数的调用和异常处理的主要区别在于:建立函数调用所需的信息在 (5) 时已经获得,而异常处理机制要求 (3) 时的支撑。对于函数,编译器知道在哪个调用点上函数被真正调用,而对异常处理,异常是 (4) 发生的。

(1)定义 (2)调用 (3)运行 (4)随机 (5)编译

3、 异常处理时与函数重载 (4) ,异常处理是由 (2) catch子句处理,而不是由

(3)catch子句处理,所以catch子句 (1) 是很重要的。

(1)排列次序 (2)最先匹配到的 (3)最佳匹配的 (4)解析不同

4、 下列程序运行结果为(A)。 #include using namespace std; class S{ public: ~S( ){cout<<”S”<<”\\t”; } };

char fun0() {

第8章 异常处理习题 2

S s1; throw(‘T’); return ‘0’; }

void main(){

try{ cout<

二、选择题

l 下列关于异常的叙述错误的是(A )。 A.编译错属于异常,可以抛出

B.运行错属于异常

C.硬件故障也可当异常抛出

D.只要是编程者认为是异常的都可当异常抛出 2下列叙述错误的是( B )。

A.当catch语句捕获一个异常后,可能不能完全处理异常

B.在try块中抛出异常后,程序最后回到try块中继续执行后面的语句 C.一个程序中可以有try语句而没有throw语句 D.throw语句抛出的异常可以不被捕获

3 关于函数声明 float fun(int a,int b)throw,下列叙述正确的是( B )。 A.表明函数抛出float类型异常 B.表明函数抛出任何类型异常 C.表明函数不抛出任何类型异常

D.表明函数实际抛出的异常 4下列叙述错误的是(C)。

A.catch(…)语句可捕获所有类型的异常 B.一个try语句可以有多个catch语句

C.catch(…)语句可以放在catch语句组的中间

D.程序中try语句与catch语句是一个整体,缺一不可

三、 写出程序运行结果 1、 #include

using namespace std; void f(); class T {public: T( )

{cout<<\ try

第8章 异常处理习题 3

{throw \ catch( char*)

{cout<<\”<

~T( ) {cout<<\ };

void main()

{cout<<\”<< endl; try{ f( ); } catch( char *)

{ cout<<\ cout<<\”<

void f( ) { T t; }

运行结果: main function constructor exception exception2

main function

四、程序设计题

创建一个newString类,在newString类的构造函数中使用new分配内存,并对私有数据成员进行赋值。如果操作不成功,则用try语句触发一个char类型异常,用catch语句捕获该异常,操作成功,输出该字符串。

说明:newString类有私有数据成员:字符指针

参考代码: #include #include using namespace std; class String{ public:

String(const char*); ~String(); void ShowStr(){cout<

private:

char *sPtr; };

String::String(const char *s){

第8章 异常处理习题 4

sPtr=new char[strlen(s)+1]; if(sPtr==NULL)throw(\ strcpy(sPtr,s); }

String::~String(){ delete[] sPtr; }

int main(){ try{ String str1(\ } catch(char* c){ cout<

本文来源:https://www.bwwdw.com/article/e5hr.html

Top