gpt4 book ai didi

c# - 如果从 using 语句中抛出异常,是否仍会调用清理逻辑?

转载 作者:行者123 更新时间:2023-11-30 15:35:19 25 4
gpt4 key购买 nike

我有一些关于使用 using 关键字的问题。我有以下代码:

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

catch ( Exception ex ) {
}

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

最佳答案

是的,它将关闭连接。

using 的全部要点在于,当您离开 using 的范围时,即使是通过异常,它也会处理该对象。

using block 在幕后是使用 try/finally block 实现的。

这也很容易进行实验测试:

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!

关于c# - 如果从 using 语句中抛出异常,是否仍会调用清理逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15118927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com