MSDN documentation for WebClient.DownloadDataAsync
列出了可能来自调用该方法的两个潜在异常。WebClient.DownloadDataAsync本身是否真的会引发异常?
例外:
- ArgumentNullException - 地址参数为null。
- WebException - 组合BaseAddress和地址形成的URI无效。 - 或者 - 下载资源时发生错误。
虽然我不怀疑,在某些时候,当这个代码被称为可能会出现这些异常,可他们居然从该行执行的发起或将他们只是在提出DownloadDataCompleted
事件的e.Error
属性面?
换句话说,将围绕WebClient.DownloadDataAsync
一个try
/catch
实际捕捉到任何或者他们只是描述了可以在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
代码是),但我不知道其他一些情况将会从下载扔调用本身。
当您尝试将'null'或无效URI传递给DownloadDataAsync时发生了什么? – dtb 2013-02-20 22:06:44
您可以反编译'DownloadDataAsync'(例如使用Reflector)并查明它是否抛出任何东西...... – Yahia 2013-02-20 22:07:32
@dtb一个'null' URI确实击中了'catch'块。谢谢。现在我想我需要嘲笑ILSpy,看看我能否找到它可能抛出的“WebException”。 – patridge 2013-02-20 22:12:40