から例外を再スローする場合、例外タイプを失う今日はcatch
ブロックでバグを見つけました:私は例外e
明示的を再スロー場合は、catchブロック
catch (const exception& e){
// do something
// throw e; <-- bug!
throw; // <-- right thing to do
}
は基本的に、私は中に、再構成し、新たなstd::exception
を取得します実際にはwhat()
メソッドからのメッセージは、私のカスタム構築メッセージではなく、デフォルトのstd::string
でした。
説明は何ですか?私はthrow;
がthrow ExceptionJustCaught;
の略記だと思った。
これは値と参照の違いです。 –
これはしばしば見落とされる非常に重要な概念です(そして、私の意見では、少なくともコンパイル時には警告であるはずのトリッキーなビットです)。素晴らしい質問! – NHDaly