第十一课 异常类构建

  当代C++库基本上都会使用C++里面的异常特性,依赖于异常特性所创建的库的稳定性是非常好的。因此,我们创建的库也要引入异常类族。本节中,我们就给DTLib添加异常类族。

  异常的类型可以是自定义的类类型

  对于类类型的异常的匹配依旧是自上而下的严格匹配

  赋值兼容性原则在异常匹配中依然适用

  一般而言

    匹配子类异常的catch放在上部

    匹配父类异常的catch放在下部

 现代C++库必然包含充要的异常类族,异常类是数据结构类所依赖的“基础设施”,我们的异常类族如下所示:

顶层的父类是一个抽象类,不能定义对象,它是用来被继承的。通过继承的方式定义了5个异常类。分别是:

扫描二维码关注公众号,回复: 2852273 查看本文章

  计算异常

  越界异常

  内存不足异常

  参数错误异常

  空指针异常

一般而言这几种异常足够了。

具体如下:

计算异常:例如,1除以0的时候,可以抛出这个异常

空指针异常:如果我们在需要合法的指针时,得到的却是一个空指针,则可以抛出这种异常。

越界异常:访问数组时,有可能越界,越界的情况下就可以抛出这种异常

内存不足异常:动态的申请内存是,内存不足时,就抛出这种异常

参数异常错误:我们编写的算法肯定要接收参数,作为好的习惯,肯定要判断一下参数的合法性,不合法的参数,要抛出这个异常

异常类中的接口定义如下所示:

可以看到,析构函数是一个虚函数,而且是一个纯虚的析构函数。纯虚的析构函数仅仅用来说明当前的类是一个抽象类。其它没有任何更多的功能。

猜你喜欢

转载自www.cnblogs.com/wanmeishenghuo/p/9499647.html