3

usingキーワードの使用について質問があります。私は次のコードを持っています:

try {
   using (System.Net.WebResponse response = httpWebRequest.GetResponse()) {
      throw new Exception("Example");
   }
} 

catch ( Exception ex ) { 
}

私の質問は、例外が発生すると接続が閉じられるかどうかです。または、キャッチ内の接続を閉じる必要がありますか?

4

1 に答える 1

4

はい、接続を閉じます。

aの全体的なポイントは、例外を通過した場合でもusing、スコープを離れるとオブジェクトを破棄することです。using

ブロックは、内部では、ブロックusingを使用して実装されtry/finallyます。

これは、実験的にテストするのにも十分簡単です。

public class Foo : IDisposable
{
    public void Dispose()
    {
        Console.WriteLine("I was disposed!");
    }
}

private static void Main(string[] args)
{
    try
    {
        using (var foo = new Foo())
            throw new Exception("I'm mean");
    }
    catch { }
 }

そして、出力は次のとおりです。

処分されました!

于 2013-02-27T17:56:28.887 に答える