Я пытаюсь обработать два различных WebException
правильно.
В основном они обрабатываются после вызова WebClient.DownloadFile(string address, string fileName)
AFAIK, до сих пор существует два, я должен обработать, оба WebException
:
Может быть больше, но это - то, что я нашел самыми важными до сих пор.
Таким образом, как я должен обработать это правильно, поскольку они - оба 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
для этой ошибки.