2つのWebExceptionを適切に処理します
-
27-09-2019 - |
質問
私は2つの異なるものを処理しようとしています WebException
適切に。
基本的に、彼らは呼び出し後に処理されます WebClient.DownloadFile(string address, string fileName)
Afaik、これまでのところ、私が処理しなければならない2つがあります。 WebException
's:
- リモート名を解決できませんでした(つまり、ファイルをダウンロードするためのアクセスサーバーへのネットワーク接続はありません)
- (404)noundではないファイル(つまり、ファイルがサーバーに存在しません)
もっとあるかもしれませんが、これは私がこれまでに最も重要だと思ったことです。
それで、どちらもこれを適切に処理する必要があります。 WebException
'Sしかし、私はそれぞれのケースを異なる方法で処理したいと思っています。
これは私がこれまでに持っているものです:
try
{
using (var client = new WebClient())
{
client.DownloadFile("...");
}
}
catch(InvalidOperationException ioEx)
{
if (ioEx is WebException)
{
if (ioEx.Message.Contains("404")
{
//handle 404
}
if (ioEx.Message.Contains("remote name could not")
{
//handle file doesn't exist
}
}
}
ご覧のとおり、メッセージをチェックして、それがどんなタイプのWebExceptionであるかを確認しています。これを行うには、より良いまたはより正確な方法があると思いますか?
ありがとう
解決
に基づく このMSDNの記事, 、次の行に沿って何かをすることができます。
try
{
// try to download file here
}
catch (WebException ex)
{
if (ex.Status == WebExceptionStatus.ProtocolError)
{
if (((HttpWebResponse)ex.Response).StatusCode == HttpStatusCode.NotFound)
{
// handle the 404 here
}
}
else if (ex.Status == WebExceptionStatus.NameResolutionFailure)
{
// handle name resolution failure
}
}
私はそれを確信していません WebExceptionStatus.NameResolutionFailure
表示されているエラーですが、スローされている例外を調べて、何を決定できますか WebExceptionStatus
そのエラーはです。
所属していません StackOverflow