2

タイトルが私の質問全体を説明していると思います。

またはfinallyから来た場合、ステートメントでコードを実行する場所を知りたいです。trycatch

出来ますか?

4

1 に答える 1

11

さて、最も簡単なアプローチは次のとおりです。

bool success = false;
try
{
    ...
    // This should be the last statement in the try block
    success = true;
}
catch(...)
{
    ...
}
finally
{
    if (success)
    {
        ...
    }
}

これは特定の言語機能ではありません。本当に顕著な状況 (基本的には非同期例外) を除いて、への割り当て後に例外が発生しないという事実を利用しているだけですsuccess

であることは、ブロックのいずれかが実行されたことを意味するものではないことに注意しsuccessてください。キャッチしていない例外がスローされた可能性があります (または、ブロックの終了前に戻った可能性があります)。基本的には、「ブロックの終わりに達した」ことを示すだけです。通常はこれで十分です。falsecatchtrytry

于 2013-04-19T09:17:42.887 に答える