c – 检测由于异常抛出的析构函数运行?

前端之家收集整理的这篇文章主要介绍了c – 检测由于异常抛出的析构函数运行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在析构函数中检测到它是一个很好的方法,它是在抛出堆栈时运行的,因为异常被抛出,而不是触发析构函数的范围的正常退出.我想知道,所以我可以创建一个有一些清理代码的类,它始终在正常退出时运行,但是在发生异常时跳过.

解决方法

std :: uncaught_exception()(在< exception>中定义)会在你的析构函数中告诉你,如果它被调用是因为一个异常:
class A
{
public:
    ~A()
    {
        if (std::uncaught_exception()) {
            // Called because of an exception
        } else {
            // No exception
        }
    }
};

猜你在找的C&C++相关文章