编程语言
首页 > 编程语言> > c#-如果using语句内引发异常,清理逻辑是否仍会被调用?

c#-如果using语句内引发异常,清理逻辑是否仍会被调用?

作者:互联网

我对使用using关键字有一些疑问.我有以下代码:

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

catch ( Exception ex ) { 
}

我的问题是,异常发生时会关闭连接吗?还是我必须关闭鱼钩内的连接?

解决方法:

是的,它将关闭连接.

使用的全部要点是,即使您通过使用例外,它也会在您离开使用范围时处置该对象.

use块是在后台使用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 { }
 }

输出为:

I was disposed!

标签:try-catch,httpwebrequest,using-statement,c,winforms
来源: https://codeday.me/bug/20191031/1973938.html