【发布时间】:2012-09-23 17:44:55
【问题描述】:
我们认为可能会发生初始化异常。所以我们写了 try/catch 块。
int f(){
throw 1;
}
class A
{
public:
A() try : _k(f())
{}
catch (int)
{
std::cout << "Exception 1" << std::endl;
}
private:
int _k;
};
但是 catch 会在更深一层上重新抛出异常。这意味着下一个代码
try
{
A a;
} catch(int)
{
std::cout << "Exception 2" << std::endl;
}
将输出:
Exception 1
Exception 2
为什么这个 try / catch 块的行为方式与普通的 try / catch 块不同?
完整代码示例:http://ideone.com/XjY2d
【问题讨论】:
标签: c++ exception exception-handling try-catch in-class-initialization