のMSDN ドキュメントにWebClient.DownloadDataAsync
は、そのメソッドの呼び出しから発生する可能性がある 2 つの潜在的な例外がリストされています。
例外:
- ArgumentNullException - アドレス パラメータが null です。
- WebException - BaseAddress とアドレスを組み合わせて形成された URI が無効です。-Or- リソースのダウンロード中にエラーが発生しました。
このコードが呼び出された時点でこれらの例外が発生する可能性があることは間違いありませんが、実際にはその実行行から発生するのでしょうか、それとも発生した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
コードはヒットしました) が、ダウンロード呼び出し自体から他の状況がスローされるかどうかはわかりませんでした。