C++ 析构函数中的功能Try块

示例

struct A
{
    ~A() noexcept(false) try
    {
        // 析构体 
    }
    catch (...)
    {
        // 析构函数体的异常在这里被捕获
        // 如果这里没有异常
        // 然后捕获的异常将重新抛出。
    }
};

请注意,尽管这是可行的,但在从析构函数进行抛出时需要非常小心,就像调用了在堆栈展开期间调用的析构函数会引发异常一样std::terminate。