2015-08-18 2 views
0

я пройти через этот кодWebException имущественного состояния, если ошибка, то ошибка печати еще успеха

try { 

// Создать веб-запрос на недопустимый сайта с. Замените «недопустимый сайт» сильным в вызове Create с недопустимым именем.

 HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("invalid site"); 

// Получите соответствующий ответ для вышеуказанного запроса.

 HttpWebResponse myHttpWebResponse = (HttpWebResponse) myHttpWebRequest.GetResponse(); 
    myHttpWebResponse.Close(); 
} 
    catch(WebException e) { 
Console.WriteLine("This program is expected to throw WebException on successful run."+"\n\nException Message :" + e.Message); 
if(e.Status == WebExceptionStatus.ProtocolError) { 
    Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode); 
    Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription); 
} 
} 
    catch(Exception e) { 
Console.WriteLine(e.Message); 
} 
+0

Я не понимаю, о чем вы спрашиваете или в чем проблема. Можете ли вы предоставить [mcve]? – rene

+0

Я хочу бросить исключение из улова в соответствии с номером статуса, например, 404, 501 и т. Д., И если это 200 статус, то успешный массаж –

ответ

1

Основываясь на ваш вопрос и комментарии Я предполагаю, что вы ищете что-то вроде этого:

try 
{ 
    HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("http://httpstat.us/500"); 
    using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse()) 
    { 
     myHttpWebResponse.Close(); 
     int code = (int)myHttpWebResponse.StatusCode; 
     if (code == 200) 
     { 
      Console.WriteLine("success"); 
     } 
     else 
     { 
      Console.WriteLine("success with code {0}", code); 
     } 
    } 
} 
catch (WebException e) 
{ 
    if (e.Status == WebExceptionStatus.ProtocolError) 
    { 
     // protocol errors find the statuscode in the Response 
     // the enum statuscode can be cast to an int. 
     int code = (int) ((HttpWebResponse)e.Response).StatusCode; 
     throw new Exception(string.Format("Status code {0} ", code)); 
    } 
} 
catch (Exception e) 
{ 
    Console.WriteLine(e.Message); 
} 

Вы можете поймать исключение, инспектировать или преобразования значений, представленных ею и бросить новое исключение ,

Вы не предоставили много контекста, но позвольте мне предупредить вас, что исключение исключений для обработки общей бизнес-логики не является лучшей практикой. Вы лучше реорганизуете дизайн, в котором вы возвращаете код состояния, чтобы вызывающие элементы вашего кода могли использовать это вместо того, чтобы реализовать try/catch. Read this msdn document для получения дополнительной информации, а также блоги по этой теме от Eric Lippert.

Смежные вопросы