Обработка двух правильно WebException
-
27-09-2019 - |
Вопрос
Я пытаюсь справиться с двумя разными WebException
правильно.
В основном они обрабатываются после звонка WebClient.DownloadFile(string address, string fileName)
AFAIK, пока есть два, я должен справиться, оба WebException
:
- Удаленное имя не может быть разрешено (то есть без сетевого подключения к серверу доступа к файлу скачивания)
- (404) Файл не науки (т.е. файл не существует на сервере)
Там может быть больше, но это то, что я нашел самым важным до сих пор.
Так как я должен справиться с этим правильно, так как они оба 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 это есть. Я бы предположил, что есть лучший или более точный способ сделать это?
Спасибо
Решение
На основе Эта статья 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
Для этой ошибки есть.