したがって、この質問finally
から、例外が発生した場合でも、例外がキャッチされずに伝播が許可された場合でも、ブロックを使用してコードを実行できることがわかりました。
この質問から、C# では、throw
キーワードをブロック内で (引数なしで) 単独で使用しcatch
て、スタック トレースをリセットすることなく、キャッチされた例外を伝播し続けることができることを理解しています。
私の質問は、これらの 2 つのブロックの違いは何ですか。
/* example 1 */
try { /* try stuff */ }
finally { /* finally/catch stuff */ }
/* example 2 */
try { /* try stuff */ }
catch { /* finally/catch stuff */ throw; }
の両方を実行してから を実行してから、スローされた例外が同じスタック トレースで伝播できるようにしないでtry stuff
くださいfinally/catch stuff
。