从析构函数中抛出异常
大多数人说绝不可能从析构函数中抛出异常-这样做会导致未定义的行为。Stroustrup指出“向量析构函数显式地为每个元素调用析构函数。这意味着如果一个元素析构函数抛出,向量销毁就会失败…没有什么好的方法来防止从析构函数抛出的异常,所以如果元素析构函数抛出,库就无法保证”(参见附录E3.2).
这篇文章似乎不是这么说的-抛出的析构函数或多或少是可以接受的。
因此,我的问题是-如果从析构函数中抛出会导致未定义的行为,那么如何处理析构函数期间发生的错误?
如果在清理操作中发生错误,您会忽略它吗?如果这是一个可能在堆栈中处理但在析构函数中不正确的错误,那么从析构函数中抛出异常不是很有意义吗?
显然,这类错误是罕见的,但有可能发生。