初期化の例外が発生する可能性があると考えています。したがって、try/catchブロックを記述します。
int f(){
throw 1;
}
class A
{
public:
A() try : _k(f())
{}
catch (int)
{
std::cout << "Exception 1" << std::endl;
}
private:
int _k;
};
しかし、キャッチは1レベル深いところで例外を再スローします。つまり、次のコードは
try
{
A a;
} catch(int)
{
std::cout << "Exception 2" << std::endl;
}
出力します:
Exception 1
Exception 2
このtry/catchブロックが通常のtry/catchブロックと同じように動作しないのはなぜですか?
完全なコード例:http://ideone.com/XjY2d