6

私は catch finally ブロックを試しましたが、何らかの例外が発生した場合は catch ブロックから戻るので、finally ブロックは引き続き実行されます。帰国前か帰国後か?

これは正しい習慣ですか?

try
{
// do something
}

catch (Exception)
{    
  return false;
}
finally
{
  if (connection.State == ConnectionState.Open) connection.Close();
}
4

4 に答える 4

6

リターン後に「最終的に」ブロックを実行します。「最後に」は、データベース接続を閉じるなどの練習に使用されます (常に実行する必要があります)。

于 2010-12-08T10:29:09.830 に答える
2

finally ブロックは常に実行されます。あなたの場合、 return ステートメントの前に実行されます。

于 2010-12-08T10:28:22.280 に答える
1

自分で試すことができます

private bool test()
    {
        try
        {
            int i = 0;
           int u = 10 / i;
        }

        catch (Exception)
        {
            return false;
        }
        finally
        {

        }
        return true;
    }

したがって、これはゼロ除算の例外です。このコードを実行すると、finallyが実行され、return後に実行されます。

これは、finallyブロックの場合に返される結果をRuntimeのようなものです。

于 2010-12-08T10:38:51.743 に答える
0

コードが try-catch-finally ブロックを終了する前に、finally ブロックが常に実行されます (finally ブロックの実行を妨げる ThreadAbortException のような条件は、コードが try-catch-finally ブロックを終了するのを防ぎます)。

于 2010-12-17T02:28:03.670 に答える