2011-09-17 10 views
5

Ho trovato un esempio di come trattare WebException sulla chiamata GetResponse e sconcertante su come la risposta può essere estratta da WebException Response. Il secondo enigma è il motivo per cui la risposta nulla viene trattata come un lancio; Qualche suggerimento?GetResponse genera WebException ed ex.Response è nullo

HttpWebResponse response = null; 
try 
{ 
    response = (HttpWebResponse) request.GetResponse(); 
} 
catch (WebException ex) 
{ 
    response = (HttpWebResponse)ex.Response; 
    if (null == response) 
    { 
     throw; 
    } 
} 

risposta

5

La risposta non dovrebbe mai essere null - in questo caso l'autore sta dicendo la WebException non può essere gestito all'interno di questo gestore di eccezioni, ed è solo propagato in su.

Comunque questo la gestione delle eccezioni non è l'ideale - probabilmente si desidera sapere perché si è verificato un'eccezione, cioè .:

catch (WebException ex) 
{ 
    if (ex.Status == WebExceptionStatus.ProtocolError && ex.Response != null) 
    { 
     var resp = (HttpWebResponse)ex.Response; 
     if (resp.StatusCode == HttpStatusCode.NotFound) // HTTP 404 
     { 
      //file not found, consider handled 
      return false; 
     } 
    } 
    //throw any other exception - this should not occur 
    throw; 
} 
Problemi correlati