次のコード スニペットがあるとします。
static void Main(string[] args)
{
try
{
throw new Exception("Exception");
}
catch
{
throw;
}
finally
{
Console.WriteLine("------finally-----");
}
}
未処理の例外とfinallyブロックがあります。
werfaultが有効Cancelになっていて、「問題を自動的に解決」しようとしているときに押すと、最終的にブロックが実行されます。
しかし、私が押していない場合Cancel、次のウィンドウでClose The Program finallyブロックをクリックしても実行されません。
そして最後に無効werfaultにしてクリックすると、Close Program 最終的にブロックが実行されます。
この状況を説明する c# 仕様のドキュメントは見つかりませんでした。また、私はこれを見つけましたMSDN:
ハンドルされないエラーの後の finally ブロックの実行は、例外アンワインド操作がどのようにトリガーされるかによって異なります。
しかし、説明はありません。なぜこれが起こっているのか誰でも説明できますか?
更新 1 : .Net Framework 4.5.1 および 4.5.2 でテストしました。


