effective c++ 8: Prevent exceptions from leaving destrctors
析构函数的异常会导致不确定行为。比如说我要有若干个自定义类的对象存在vector里,但是在析构函数里销毁这个vector第一个元素的时候发生了异常,那后面的元素可能无法正确销毁从而导致内存泄露。
解决析构函数抛异常的方法有这样两种:
1. 一旦抛异常就结束程序(catch里abort()),这样避免了异常继续传播。
2. 吞下异常(catch里记录异常原因等等)。
但是更好的方式是把可能导致异常的操作写在析构函数外面的普通函数里,这样就有机会去处理这个可能的异常。