原则11:进制异常信息传递到析构函数外

在这里首先要说明一下析构函数被调用的两种情况。
1、一个对象被正常删除。2、在异常传递过程中,堆栈开解,由异常系统删除对象。
本原则要面对的问题是如果异常处理中涉及到的析构函数的代码没有处理好异常导致异常被抛到析构函数外,C++不知道该怎么妥善处理,于是它决定采用暴力手段,即调用terminate函数立即终止程序的执行,这种方法过于暴力甚至连局部对象都没来得及释放。
C++往往把真正处理垃圾回收的工作放到一个辅助函数里面,并用析构函数调用这个辅助函数来完成的。那现在解决问题的办法就是在析构函数中把该辅助函数放到try中,然后再在catch中放入适当的处理代码。
另外,如果异常跑到了析构函数外面,析构函数也不会被完全执行,那么它原本应该完成的工作就不会被如愿被完成。
所以总结一下,为什么不要让异常跑到析构函数外面的原因就是:1、防止terminate被调用。2、让析构函数执行完全。

多谢捧场

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


你可能感兴趣的:(原则11:进制异常信息传递到析构函数外)