struct A
{
~A() noexcept(false) try
{
// 析构体
}
catch (...)
{
// 析构函数体的异常在这里被捕获
// 如果这里没有异常
// 然后捕获的异常将重新抛出。
}
};请注意,尽管这是可行的,但在从析构函数进行抛出时需要非常小心,就像调用了在堆栈展开期间调用的析构函数会引发异常一样std::terminate。