理论教育 学习《面向对象程序设计》:exception类

学习《面向对象程序设计》:exception类

更新时间:2025-01-03 理论教育 版权反馈
【摘要】:C++标准类库中提供了标准异常类,即exception类用来产生异常对象。在exception类中的what()函数可以被派生类重写,用来返回异常的描述信息。C++中已经定义了一些exception类的派生类,用来处理各种类型的异常。表9-1常见的exception类的派生类在表9-1中,bad_alloc类在头文件< new > 中定义,bad_cast类和bad_typeid类在头文件< typeinfo > 中定义,logic_error 类和runtime_error 类及它们的派生类在 中定义。程序的运行结果如下:exception caught:Attempted a typeid of NULL pointer!

C++标准类库中提供了标准异常类,即exception类用来产生异常对象。它在<exception> 头文件中定义。以下是exception类的定义。

在exception类中的what()函数可以被派生类重写,用来返回异常的描述信息。C++中已经定义了一些exception类的派生类,用来处理各种类型的异常。常见的异常派生类信息如表9-1所示。

表9-1 常见的exception类的派生类

在表9-1中,bad_alloc类在头文件< new > 中定义,bad_cast类和bad_typeid类在头文件< typeinfo > 中定义,logic_error 类和runtime_error 类及它们的派生类在 <stdexcept> 中定义。

logic_error类派生出invalid_argument类、out_of_range类、length_error类等。当在给函数传递无效参数时可以产生invalid_argument类的异常;当数组元素的下标发生越界时,可以产生out_of_range类的异常;当字符串的长度超出最大允许的长度时,可以产生length_error类的异常。runtime_error类异常是在程序运行时发生的异常,它派生出range_error类、overflow_error类、underflow_error类等。当程序中的计算结果超出类型所能表示的最大值时,可以产生overflow_error类异常,当超出类型所能表示的最小值时,可以产生underflow_error类异常。如果计算的结果不在函数允许的范围内,但不上溢或下溢,可以产生range_error类异常。

在程序设计中,对可能产生异常的代码段进行检测,抛出异常,系统捕获异常后对异常进行处理,一般是输出异常原因和相关信息。(www.daowen.com)

【例9.4】设计一个抽象类,定义抽象类的空指针,使用typeid运算符,系统会产生bad_typeid类的异常对象,捕获异常,并输出异常信息。

程序的运行结果如下:

exception caught:Attempted a typeid of NULL pointer!

class bad_typeid

在程序运行到typeid(∗pb);语句时,发生异常,产生bad_typeid异常对象,抛出异常,在main函数中捕获异常对象,处理异常,结果输出第一行是对异常的描述,第二行输出异常类的名称。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈