2011-09-17 7 views
5

He encontrado un ejemplo de cómo tratar WebException en la llamada a GetResponse, y desconcierto sobre cómo se puede extraer la respuesta de WebException Response. El segundo acertijo es por qué la respuesta nula se trata como arrojar; ¿Cualquier sugerencia?GetResponse lanza WebException y ex.Response es nulo

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

Respuesta

5

La respuesta no debe ser nunca null - en este caso el autor está diciendo que el WebException no puede ser manejada dentro de este gestor de excepciones y que sólo se propaga hacia arriba.

embargo este tratamiento de excepciones no es lo ideal - es probable que desee saber por qué se produjo una excepción, es decir .:

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; 
} 
Cuestiones relacionadas