MSDN 文档WebClient.DownloadDataAsync
列出了两个可能来自调用该方法的潜在异常。
例外:
- ArgumentNullException - 地址参数为空。
- WebException - 由 BaseAddress 和地址组合形成的 URI 无效。- 或 - 下载资源时出错。
虽然我不怀疑这些异常可能在调用此代码时的某个时刻发生,但它们实际上是否源自该执行行,或者它们只会出现在引发DownloadDataCompleted
事件的e.Error
属性中?
换句话说,a try
/ catch
around会WebClient.DownloadDataAsync
真正捕获任何东西,还是它们只是描述可能出现的错误e.Error
?
using (WebClient webClient = new WebClient()) {
webClient.DownloadDataCompleted += (sender, e) => {
if (e.Error != null) {
// Exceptions definitely available here.
Console.WriteLine(e.Error.Message);
}
else {
Console.WriteLine("Success!");
}
};
try {
webClient.DownloadDataAsync(someUri);
}
catch {
// Would this ever be hit?
Console.WriteLine("Caught an exception from DownloadDataAsync.");
}
}
我尝试了一个简单的 404 错误,但没有命中 catch 块(而e.Errors
代码是),但我不知道下载调用本身是否会引发其他情况。