1. ホーム
  2. c#

[解決済み] catchブロックから例外をスローした場合、finallyはいつ実行されますか?

2022-04-24 12:33:24

質問

try {
   // Do stuff
}
catch (Exception e) {
   throw;
}
finally {
   // Clean up
}

上記のブロックでは、いつfinallyブロックが呼ばれるのでしょうか?eを投げる前ですか、それともfinallyが呼び出されてからcatchするのですか?

どのように解決するのですか?

e が再スローされた後(つまりキャッチブロックが実行された後)に呼び出されます。

は、7年後にこれを編集しています - 1つの重要な注意点は、もし e がコールスタックのさらに上の try/catch ブロックで捕捉されないか、グローバルな例外ハンドラで処理されない場合は finally ブロック かもしれない は全く実行されない。