C++相談室 part45
■ このスレッドは過去ログ倉庫に格納されています
0090デフォルトの名無しさん
2005/11/30(水) 13:55:21初期化子に付随する、function-try-block があれば、
コンストラクタで失敗したときにログを吐く場合も有効。
struct foo
{
auto_ptr< bar > x;
auto_ptr< bar > y;
// function-try-block が利用できる場合(非常に便利)
foo( int v )
try : x( new bar( v ) ), y( new bar( v ) ) {}
catch( exception const & e ) {
cout << "初期化失敗:" << e.what() << endl;
} // ここで例外が自動的に再スローされる。
// function-try-block が利用できない場合(非常に不便)
foo( int v, bad_tag )
{
try {
x = auto_ptr< bar >( new bar( v ) );
y = auto_ptr< bar >( new bar( v ) );
}
catch( exception const & e ) {
cout << "初期化失敗:" << e.what() << endl;
throw e; // 自分で再度投げる
}
}
};
■ このスレッドは過去ログ倉庫に格納されています