当代C++库基本上都会使用C++里面的异常特性,依赖于异常特性所创建的库的稳定性是非常好的。因此,我们创建的库也要引入异常类族。本节中,我们就给DTLib添加异常类族。
异常的类型可以是自定义的类类型
对于类类型的异常的匹配依旧是自上而下的严格匹配
赋值兼容性原则在异常匹配中依然适用
一般而言
匹配子类异常的catch放在上部
匹配父类异常的catch放在下部
现代C++库必然包含充要的异常类族,异常类是数据结构类所依赖的“基础设施”,我们的异常类族如下所示:
顶层的父类是一个抽象类,不能定义对象,它是用来被继承的。通过继承的方式定义了5个异常类。分别是:
扫描二维码关注公众号,回复:
2852273 查看本文章
计算异常
越界异常
内存不足异常
参数错误异常
空指针异常
一般而言这几种异常足够了。
具体如下:
计算异常:例如,1除以0的时候,可以抛出这个异常
空指针异常:如果我们在需要合法的指针时,得到的却是一个空指针,则可以抛出这种异常。
越界异常:访问数组时,有可能越界,越界的情况下就可以抛出这种异常
内存不足异常:动态的申请内存是,内存不足时,就抛出这种异常
参数异常错误:我们编写的算法肯定要接收参数,作为好的习惯,肯定要判断一下参数的合法性,不合法的参数,要抛出这个异常
异常类中的接口定义如下所示:
可以看到,析构函数是一个虚函数,而且是一个纯虚的析构函数。纯虚的析构函数仅仅用来说明当前的类是一个抽象类。其它没有任何更多的功能。