2011-09-17 26 views
5

Tôi đã tìm thấy ví dụ về cách xử lý WebException trên cuộc gọi GetResponse và khó hiểu về cách phản hồi có thể được trích xuất từ ​​Phản hồi ngoại lệ WebException. Câu đố thứ hai là lý do tại sao đáp ứng null được coi là ném; Bất kì lời đề nghị nào?GetResponse ném WebException và ex.Response là null

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

Trả lời

5

Câu trả lời không bao giờ được null - trong trường hợp này tác giả đang nói những WebException không thể được xử lý trong xử lý ngoại lệ này và nó chỉ được truyền lên.

Tuy nhiên xử lý ngoại lệ này không phải là lý tưởng - có thể bạn muốn biết lý do tại sao một ngoại lệ xảy ra, tức là .:

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; 
} 
Các vấn đề liên quan