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

在析构函数中检测到它是一个很好的方法,它是在抛出堆栈时运行的,因为异常被抛出,而不是触发析构函数的范围的正常退出.我想知道,所以我可以创建一个有一些清理代码的类,它始终在正常退出时运行,但是在发生异常时跳过.

解决方法

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

相关文章

对象的传值与返回说起函数,就不免要谈谈函数的参数和返回值...
从实现装饰者模式中思考C++指针和引用的选择最近在看...
关于vtordisp知多少?我相信不少人看到这篇文章,多半是来自...
那些陌生的C++关键字学过程序语言的人相信对关键字并...
命令行下的树形打印最近在处理代码分析问题时,需要将代码的...
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特...