MSDN documentation for WebClient.DownloadDataAsync
列出了调用该方法可能产生的两个潜在异常。
例外:
虽然我不怀疑在调用此代码的某些时候可能会出现这些异常,但它们是否真的来自该执行行,或者它们是否只会出现在DownloadDataCompleted
事件的e.Error
中属性?
换句话说,try
周围catch
/ 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
代码是),但我不知道是否会有其他情况从下载调用中抛出。
答案 0 :(得分:1)
是的,DownloadDataAsync
会直接抛出ArgumentNullException
。它还会抛出NotSupportedException
和UriFormatException
。但任何WebException
都将通过回调(即事件)。