我对使用using
关键字有疑问。我有以下代码:
try {
using (System.Net.WebResponse response = httpWebRequest.GetResponse()) {
throw new Exception("Example");
}
}
catch ( Exception ex ) {
}
我的问题是,当发生异常时它会关闭连接吗?或者我必须关闭catch中的连接吗?
答案 0 :(得分:4)
是的,它将关闭连接。
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 { }
}
输出是:
我被处分了!