35

catch ブロックと finally ブロックの両方が例外をスローするとどうなりますか?

4

5 に答える 5

32

ブロックが例外をスローすると、ブロックfinallyからスローされた例外が効果的に非表示にcatchなり、最終的にスローされる例外になります。したがって、キャッチされたときに例外をログに記録するか、finally ブロック自体が例外をスローしないようにすることが重要です。

于 2009-09-26T23:32:50.167 に答える
6

catch が例外をスローすると、finally ブロックが実行され、例外で終了します。finally ブロックが例外をスローした場合、ブロックは例外で終了します。

于 2009-09-26T23:26:29.430 に答える
4

最後にスローされた例外がスローされます。

于 2009-09-26T23:25:45.050 に答える
4

Adrianbanks によって既に十分に回答されていますが、次の投稿は興味深いものになるはずです: 興味深い例外結果: 例外をスローして、Finally ブロックから

于 2009-09-26T23:34:29.400 に答える
-4

HI Nwaman あなたの答えは間違っていると思います。Windows アプリケーションでテストしました。

try
{
    string s = "hu";
    int i = int.Parse(s);
}
catch (Exception ex)
{
    string s = "hu";
    int i = int.Parse(s);
    throw new Exception();
}
finally
{
    MessageBox.Show("hi");
}

そして、これは最終的に実行されることはありません。

于 2012-10-22T09:36:50.583 に答える