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