Обработка двух WebException правильно

Я пытаюсь обработать два различных WebExceptionправильно.

В основном они обрабатываются после вызова WebClient.DownloadFile(string address, string fileName)

AFAIK, до сих пор существует два, я должен обработать, оба WebException:

  • Удаленное имя не могло быть разрешено (т.е. Никакое сетевое соединение к серверу доступа для загрузки файла)
  • (404) Файл не nound (т.е. файл не существует на сервере),

Может быть больше, но это - то, что я нашел самыми важными до сих пор.

Таким образом, как я должен обработать это правильно, поскольку они - оба WebExceptionно я хочу обработать каждый случай выше по-другому.

Это - то, что я имею до сих пор:

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 это. Я предположил бы, что существует лучшее или более точный способ сделать это?

Спасибо

18
задан baron 16 April 2010 в 05:10
поделиться

1 ответ

На основании этой статьи 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 для этой ошибки.

27
ответ дан 30 November 2019 в 08:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: