如何从成员析构函数中捕获异常

2023-12-30

我想知道是否(以及如何)可以捕获成员析构函数中引发的异常。例子:

#include <exception>

class A
{
public:
    ~A() {
        throw std::exception("I give up!");
    }
};

class B
{
    A _a;
public:
    ~B() {
        // How to catch exceptions from member destructors?
    }
};

是的,您可以使用以下方法捕获此类异常函数尝试块:

class B
{
    A _a;
public:
    ~B() try {
        // destructor body
    }
    catch (const std::exception& e)
    {
        // do (limited) stuff
    }
};

但是,对于这样的例外,您实际上无法做太多事情。该标准规定您不能访问非静态数据成员或基类B object.

还有,你cannot使异常保持沉默。与其他函数不同的是,一旦函数尝试块析构函数(或构造函数)的处理程序完成执行。

总而言之,析构函数确实不应该抛出异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从成员析构函数中捕获异常 的相关文章

  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 启动时出现 OData v4 错误:找不到段“Whatever”的资源

    我正在构建新的 v4 服务 一切进展顺利 直到我为新模型 实体添加了新控制器 并在启动站点进行测试运行时收到此错误 控制器似乎编码正确 就像其他控制器一样 控制器 CustomersOData 中的操作 GetFeed 上的路径模板 Cus
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 将 System.Windows.Input.KeyEventArgs 键转换为 char

    我需要将事件参数作为char 但是当我尝试转换 Key 枚举时 我得到的字母和符号与传入的字母和符号完全不同 如何正确地将密钥转换为字符 这是我尝试过的 ObserveKeyStroke this new ObervableKeyStrok
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 如何使用 Mongodb C# 驱动程序连接多个集合

    我需要将 3 个集合与多个集合合并在一起 lookup我在 C 驱动程序中尝试过 它允许我 lookup用户采集但无法执行秒 lookup用于设置集合 有人可以帮忙吗 db Transactions aggregate lookup fro
  • 等待线程完成

    private void button1 Click object sender EventArgs e for int i 0 i lt 15 i Thread nova new Thread Method nova Start list
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • .NET中的LinkedList是循环链表吗?

    我需要一个循环链表 所以我想知道是否LinkedList是循环链表吗 每当您想要移动列表中的 下一个 块时 以循环方式使用它的快速解决方案 current current Next current List First 电流在哪里Linke
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Process.Start() 方法在什么情况下返回 false?

    From MSDN https msdn microsoft com en us library e8zac0ca v vs 110 aspx 返回值 true 表示有新的进程资源 开始了 如果由 FileName 成员指定的进程资源 St
  • memset 未填充数组

    u32 iterations 5 u32 ecx u32 malloc sizeof u32 iterations memset ecx 0xBAADF00D sizeof u32 iterations printf 8X n ecx 0
  • 检查Windows控制台中是否按下了键[重复]

    这个问题在这里已经有答案了 可能的重复 C 控制台键盘事件 https stackoverflow com questions 2067893 c console keyboard events 我希望 Windows 控制台程序在按下某个
  • 当另一个线程可能设置共享布尔标志(最多一次)时,是否可以读取共享布尔标志而不锁定它?

    我希望我的线程能够更优雅地关闭 因此我尝试实现一个简单的信号机制 我不认为我想要一个完全事件驱动的线程 所以我有一个工作人员有一种方法可以使用关键部分优雅地停止它Monitor 相当于C lock我相信 绘图线程 h class Drawi
  • 防止在工厂方法之外实例化对象

    假设我有一个带有工厂方法的类 class A public static A newA Some code logging return new A 是否可以使用 a 来阻止此类对象的实例化new 那么工厂方法是创建对象实例的唯一方法吗 当
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • 网格未显示(全黑)

    我不想回到昨天的同一问题 但是在我能够使用该功能打开和关闭网格之前 我首先需要知道我的网格是否真正工作 我一直在制作新项目整晚都试图显示网格 但它没有显示 屏幕总是黑的 什么也没有 include include freeglut h Op
  • 通过 JavaScript 打开 Outlook

    有谁知道如何使用 Javascript 打开 Outlook 我在使用此代码时遇到异常 在 IE6 中 var outlookApp new ActiveXObject Outlook Application 你绝对可以做到这一点 代码如下
  • 检测 NSString 是否包含...?

    如何检测字符串中是否包含某个单词 例如 我下面有一个字符串 内容如下 Here is my string 我想知道是否可以检测字符串中的单词 例如 is 我会这样做 NSString someString Here is my string
  • 在 ruby​​ 上使用 xpath 获取 html 片段的前几个元素

    对于像博客这样的项目 我想从 Markdown 生成的 html 片段中获取前几个段落 标题 列表或字符范围内的任何内容 以显示为摘要 所以如果我有 h1 hello world h1 p Lets say these are 100 ch
  • 为什么基于指针交换两个值在函数作用域之外不起作用?

    我已经很多年没有用 C 编程了 所以我决定刷新一下我对指针的记忆 在两个数字之间交换的经典示例中 示例是 void swapPointersClassic double num1 double num2 double temp temp n
  • Stripe - 更改计划后,在当前周期结束之前不会为新订阅计费

    我想让用户更改他们的订阅计划 但转换后将不予退还 如果我将按比例设置为 false 则 stripe 将立即为新订阅计费 例如 如果用户在 2018 年 6 月订阅了包年套餐 并希望在 2018 年 10 月更改为包月套餐 由于当前周期尚未
  • 关于 Haskell 中随机数的另一个问题

    我正在尝试制作一个版本Pokemon Gold and Silver 的 Voltorb 游戏 https bulbapedia bulbagarden net wiki Voltorb Flip在哈斯克尔 现在 为了生成板 我想要一个 l
  • go 如何计算映射中键的哈希值?

    Go 如何计算映射中键的哈希值 它真的是独一无二的吗 是否可以用于其他结构 我想对于像这样的原始键来说很容易int或不可变的string但这对于复合结构来说似乎并不简单 语言规范没有说明 这意味着它可以随时更改 或者在实现之间有所不同 哈希
  • Android-在两个视图之间绘制线

    下面是我的程序 我在框架中创建了三个新视图 单击两个不同的视图时 我想在视图之间画一条线 我正在尝试弄清楚如何做到这一点 Ball ball1 new Ball this 100 100 45 Ball ball2 new Ball thi
  • 在字典内添加字典中的键值对

    我有一个字典 它有一个字符串的映射和一个字典 如何在内部字典 中添加键值对 Dictionary
  • 使用 IdentityServer3 保护 IdentityManager

    在我的设置中 IdentityManager 位于 IdentityServer 的同一主机上 所有必需的配置都在数据库上 为了创建我的设置 我已经考虑了这个问题 https stackoverflow com q 29938538 431
  • 使用haproxy的http请求到https请求

    我有一种情况 我想使用 haproxy 将所有 http 请求重定向到 https 请求 假设我有一台安装了 haproxy 的服务器 x 和一台运行实际服务的服务器 y 使用 ssl 现在 我希望 haproxy 接受 http 请求并通
  • 检查两个数学答案是否相等

    我正在用 python 编写一个小应用程序 让用户回答数学问题 我遇到的问题是检查他们的答案 假设有这样一个问题 因式分解x 2 3x 2 有不同的方法可以回答这个问题 例如 x 1 x 2 x 2 x 1 2 x x 1 etc 是否有一
  • NUnit 不运行套件测试

    我在 NUnit 中创建了一个测试套件 它引用了各种程序集中的几个不同的单元测试装置 我几乎使用了来自的示例代码 namespace NUnit Tests using System using NUnit Framework using
  • 更改 TreeView ItemsPanel 方向没有效果

    默认ItemsPanel of a TreeView is a StackPanel具有默认方向Vertical 我改变了方向StackPanel to Horizontal
  • 如何在命令行中使用 Python 脚本而无需 cd 到其目录?是 PYTHONPATH 吗?

    我如何利用 PYTHONPATH 当我尝试在路径中运行脚本时 该文件不是 成立 当我 cd 到保存脚本的目录时 脚本将运行 那么有什么好处 Python路径 echo PYTHONPATH home randy lib python tre
  • 从对象属性值中删除逗号

    我有一个对象 其中一对的值中有一个逗号 我想删除对象中所有此类值的逗号并返回修改后的对象 对象如下 var obj id 1 Product1 Table Phone1 9878987 Price 21 000 id 2 Product1
  • 如何让 Deploy.cmd 填充Parameters.xml 中的替换字段

    我有一个使用 msdeploy 部署的 Web 应用程序 我在项目中定义了以下parameters xml文件
  • python、mongoengine - 进行类似/正则表达式搜索

    我知道我可以在 mongodb 上进行 glob 类型搜索 db person find name bob or db person find name regex bob 如何在不使用原始查询的情况下使用 mongoengine 执行此操
  • 如何从成员析构函数中捕获异常

    我想知道是否 以及如何 可以捕获成员析构函数中引发的异常 例子 include