c++ - 为什么我的程序在析构函数抛出异常时终止?

标签 c++ exception destructor

我不明白为什么如果有一个活跃的异常,那么如果再次引发异常,它会导致程序终止。有人可以解释一下吗?

最佳答案

它应该做什么?它不能“双重捕获”或任何东西,简单地忽略一个也没有意义。该标准规定,如果在堆栈展开期间,另一个异常逃逸,则应调用 terminate

C++ FAQ 中有更多讨论.一种“解决方案”是将析构函数代码包装在 try/catch block 中,并且不要让异常逃逸。

另一个是提出某种自定义异常链接方案。您将执行上述操作,但不是忽略异常,而是将其附加到当前抛出的异常,并在捕获站点手动处理这两个异常。

我认为最好的解决方案是尝试从析构函数中删除异常代码。

关于c++ - 为什么我的程序在析构函数抛出异常时终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886491/

相关文章:

javascript - 捕获 iframe 异常

c++ - 这个简单的代码会导致内存泄漏吗?

c++ - 如何显示 256x256 的网格?

c++ - cpp从需要父类(super class)对象的函数访问子类对象方法

c++ - Arduino 中的预定义数组

c++ - OpenCV 计算房间里的人数

c# - 尝试反序列化 xml 文件时出现异常

c# - 如何在不丢失任何数据的情况下序列化和反序列化异常对象?

C++:并发和析构函数

c++ - 为什么代码两次调用析构函数?