在动手写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的异常说明符时,也可以取得两个数字的值并打印出来。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。