首页 理论教育 C++异常对象-《零基础C++从入门到精通》

C++异常对象-《零基础C++从入门到精通》

时间:2023-08-20 理论教育 版权反馈
【摘要】:在动手写13.1.3中,我们介绍了一些标准库中预置异常的捕获,而异常对象当然也可以由我们自己定义。异常说明符可以定义成引用或者对象,分别接收按引用传递和按值传递的异常对象。其中,当第二个参数为0时,抛出runtime_error异常。下面我们尝试自定义一个异常类型:动手写13.1.5动手写13.1.5展示了异常类型的定义与使用,运行结果如图13.1.6所示:图13.1.6异常类型的定义在这个示例中,我们从runtime_error继承了overflow类,用来表示char加法溢出的异常。

C++异常对象-《零基础C++从入门到精通》

在动手写13.1.3中,我们介绍了一些标准库中预置异常的捕获,而异常对象当然也可以由我们自己定义。在catch块中定义的异常对象也叫作异常说明符(Exception Specifier),它用来获取抛出的异常对象。异常说明符可以定义成引用或者对象,分别接收按引用传递和按值传递的异常对象。由于我们不能保证这一定是按引用传递的,所以在定义异常对象的时候一定要使其可以支持复制构造函数。

在定义自己的异常对象前,我们先看一下抛出异常是如何进行的。

动手写13.1.4

动手写13.1.4展示了抛出异常的语法。运行结果如图13.1.5所示:

图13.1.5 抛出异常

在示例中,我们定义了整数类并重载了除法操作符。其中,当第二个参数为0时,抛出runtime_error异常。异常对象的构造就是在throw的时候进行的,我们可以把错误信息当作参数传入,这个信息在catch块中可以由异常对象的what()函数取得。(www.xing528.com)

在这个示例中,我们抛出的异常是在标准库中预先定义好的。标准库中的异常都继承自Exception基类,而我们在定义自己的异常对象时也需要从某个异常类继承。下面我们尝试自定义一个异常类型:

动手写13.1.5

动手写13.1.5展示了异常类型的定义与使用,运行结果如图13.1.6所示:

图13.1.6 异常类型的定义

在这个示例中,我们从runtime_error继承了overflow类,用来表示char加法溢出的异常。overflow类除了错误信息外,还增加了两个计算操作数的值的成员。我们在catch块中使用overflow的异常说明符时,也可以取得两个数字的值并打印出来。

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

我要反馈