首页 理论教育C++程序设计基础教程:异常处理控制权转换实例

C++程序设计基础教程:异常处理控制权转换实例

【摘要】:9.1当异常被抛出时,程序的控制权会如何转换?

C++程序设计基础教程:异常处理控制权转换实例

【例9.6】编写一个程序,设计一个学生类Student,采用异常处理的方法,在输入学生类Student对象的数据时检测成绩输入是否正确。

解:在Student类中设计一个getinfor()成员函数,用于输入学生数据,当成绩score大于100小于0时抛掷一个异常。然后在catch()中显示相应的出错信息并调用getscore()成员函数继续输入该生的成绩。程序如下:

本程序的一次执行结果如下:

输入数据:

 输入学号姓名成绩:101李英-100↙

  李英成绩不正确,重新输入:90↙

 输入学号姓名成绩:102张华80↙

 输入学号姓名成绩:103王丽92↙

 输入学号姓名成绩:104钱明130↙

  钱明成绩不正确,重新输入:98↙

输出数据:

 101 李英 90

 102 张华 80

 103 王丽 92(www.chuimin.cn)

 104 钱明 98

【例9.7】编写一个程序,采用异常处理的方法,在指定的文件不存在时显示出错信息;文件存在时显示其大小。

解:当文件流fileinfor不存在时,抛掷一个字符串错误,在catch()中检测该错误,输出出错信息。程序如下:

本程序的一次执行结果如下:

文件名:TestFile.txt↙

TestFile.txt文件不存在!

9.1 当异常被抛出时,程序的控制权会如何转换?

9.2 简述一次捕获所有异常的方法。

9.3 程序抛出异常时,程序的控制权还会再回到原来的抛出点吗?

9.4 使用catch(...)来捕获所有的异常有什么优点和缺点?

9.5 一个try区块可以对应多个catch区块,有什么要求吗?

9.6 给出以下程序的执行结果。