原则13:通过引用捕获异常

程序可以通过指针传递异常,但是这是有条件的。那就是指针所指的对象必须是全局的,静态的,否则对象生存期结束,指针就成为了野指针。另外,你也可以通过在堆上建立一个对象,然后传递指向该对象的指针,这是因为堆上的对象不会自动被删除,它需要被手动释放,但是,这容易造成资源泄露。所以使用指针传递异常是非常不明智的。
值也可以用来传递异常,并且它可以解决上述问题,但是,用值传递异常会导致两次产生临时对象。一次是异常机制本身的临时对象,另一次值传递机制中的临时对象,这个非常费时费力。另一个坏处是在异常传递的过程中对象的类型是以catch参数中的异常类类型为准的,即如果catch的异常类类型是父类,那么这个对象就会被当成父类来处理,如此一来调用的虚函数也并不是异常类本身的虚函数而是异常类父类的虚函数。
使用引用传递异常可以避开以上所有问题。

多谢捧场

如果您觉得我的文章有价值,那么赏脸打赏一个,鄙人感激不尽。不过,不打赏看看也是好的,如果有不对的地方,还请您多多指正。


你可能感兴趣的:(原则13:通过引用捕获异常)