根据此网页上所写的内容,如果我理解正确,该using
语句的工作方式类似于 a try/finally
,因此我可能会错误地认为,如果语句中发生异常using
,它不应该使程序崩溃。
但是,当DownloadString
下面示例中显示的方法抛出 aWebException
时,程序会崩溃。
using (WebClient client = new WebClient())
{
string response = client.DownloadString(url);
// ...
}
这是正常的,因为该using
语句不像 a 那样工作try/catch/finally
,所以实际上没有处理任何异常。但后来我想知道该声明的目的是什么using
。
更新...根据下面的回复,我添加了以下注意事项。基本上,如果我需要处理异常,可能的解决方案如下。
- 将
using
语句放在try/catch
块中。 - 仅将
DonwloadString
方法放在try/catch
块内。 - 手动编写 try/catch/finally 块,如下面的代码示例所示。
第三种解决方案的示例代码。
WebClient client = new WebClient();
try
{
string response = client.DownloadString(url);
// ...
}
catch(Exception ex)
{
// handle (or ignore) the exception
}
finally
{
if (client != null)
client.Dispose();
}