c++ - 从构造函数的初始化列表中捕获异常

标签 c++ exception

这是一个奇怪的问题。我有一个 A 类。它有一个 B 类项,我想在 A 的构造函数中使用初始化列表对其进行初始化,如下所示:

class A {
    public:
    A(const B& b): mB(b) { };

    private:
    B mB;
};

有没有办法捕获 mB 的复制构造函数可能抛出的异常,同时仍然使用初始化列表方法?或者我是否必须在构造函数的大括号中初始化 mB 才能进行 try/catch?

最佳答案

阅读 http://weseetips.wordpress.com/tag/exception-from-constructor-initializer-list/ )

编辑:经过更多挖掘,这些被称为“功能尝试 block ”。

我承认在我去寻找之前我也不知道这一点。你每天都能学到一些东西!我不知道这是否是对我这些天很少使用 C++、我缺乏 C++ 知识或经常乱扔该语言的拜占庭特性的控诉。嗯,我还是喜欢它:)

为了确保人们不必跳转到另一个站点,构造函数的函数 try block 的语法原来是:

C::C()
try : init1(), ..., initn()
{
  // Constructor
}
catch(...)
{
  // Handle exception
}

关于c++ - 从构造函数的初始化列表中捕获异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160147/

相关文章:

android - 指定的子项已有父项。填充表格行时,您必须对 child 的 parent 调用 removeChild()

c++ - 如何动态创建函数数组?

c++ - 快速检查字符串是否包含字典文件中的单词的方法?

c++ - 将字符串文字传递给 std::map::find(..)

c++ - 没有用户提供的构造函数的 const 限定类型的默认初始化

java - 如何将@ExceptionHandler与Spring拦截器一起用于两个JSP页面?

c++是否有默认数据类以合理的速度进行基于排序索引的访问?

python - 将错误打印到屏幕但继续执行代码

java - 保留 TEXT 数据类型时出现 Hibernate 错误

python - 有太多专门的异常;这是一个问题吗?