加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 05:37:03 所属栏目:百科 来源:网络整理
导读:在析构函数中检测到它是一个很好的方法,它是在抛出堆栈时运行的,因为异常被抛出,而不是触发析构函数的范围的正常退出.我想知道,所以我可以创建一个有一些清理代码的类,它始终在正常退出时运行,但是在发生异常时跳过. 解决方法 std :: uncaught_exception()(
在析构函数中检测到它是一个很好的方法,它是在抛出堆栈时运行的,因为异常被抛出,而不是触发析构函数的范围的正常退出.我想知道,所以我可以创建一个有一些清理代码的类,它始终在正常退出时运行,但是在发生异常时跳过.

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读