gpt4 book ai didi

c# - 流是否在 try/catch 语句中自动处理?

转载 作者:太空狗 更新时间:2023-10-29 23:54:08 24 4
gpt4 key购买 nike

如果我在 try block 内创建一个流并引发异常,该流会自动被处理掉吗?例如:

try
{
Stream stream = response.GetResponseStream();
//Error Occurs
stream.Close();
}
catch
{
//Handle Error
}

如果这不是做到这一点的方法,您能否建议一种方法?

最佳答案

不,你需要使用finally

Stream stream;
try
{
stream = response.GetResponseStream();
//Error Occurs
}
catch
{
//Handle Error
}
finally
{
if(stream != null)
stream.Close();
}

或者,将您的 Stream 声明/定义包装在 using 语句中,该语句会自动调用 Close():

try
{
using(Stream stream = response.GetResponseStream())
{
//Error happens
}
//stream.Dispose(), which calls stream.Close(), is called by compiler here
}
catch
{
//Handle Error
}

请注意,我的两个示例完全不等价 - 在第一个示例中,异常在调用 steam.Close() 之前处理,在第二个示例中,异常是之后处理。

关于c# - 流是否在 try/catch 语句中自动处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6416416/

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