例外をキャッチして再スローするときに考慮すべきベスト プラクティスは何ですか? オブジェクトException
とInnerException
スタック トレースが保持されるようにしたいのですが、次のコード ブロックではこれを処理する方法に違いがありますか?
try
{
//some code
}
catch (Exception ex)
{
throw ex;
}
対:
try
{
//some code
}
catch
{
throw;
}
ベストアンサー1
スタックトレースを保存する方法は、throw;
これを使用することです。これも有効です。
try {
// something that bombs here
} catch (Exception ex)
{
throw;
}
throw ex;
基本的にはその時点から例外をスローするようなものなので、スタック トレースはステートメントを発行した場所にのみ移動しますthrow ex;
。
マイク例外によって例外を渡すことが許可されている場合 (推奨)、これも正しいです。
カール・セガンがあります例外処理に関する素晴らしい記事彼のプログラミングの基礎電子書籍これも素晴らしい読み物です。
編集: 作業中のリンクプログラミングの基礎pdf。テキストで「例外」を検索するだけです。