我们认为可能会发生初始化异常。所以我们写了 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