2013-06-22 147 views
1

我正在使用WebRequest/WebResponse來獲取一些遠程HTML。當我的代碼碰到來自遠程服務器的錯誤時,會引發異常。WebResponse嘗試捕獲

這裏是我的代碼的示例:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 
request.UserAgent = "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/13.0.782.112 Safari/535.1"; 

WebResponse response = request.GetResponse(); 
string html = response.ToString(); 

例外是越來越上拋出 「WebResponse的響應= request.GetResponse();」

如果我嘗試將它封裝在try塊中,則下面的「響應」加下劃線,並表示在當前上下文中不存在名稱「響應」。下面是一個例子:

try 
{ 
    WebResponse response = request.GetResponse(); 
} 
catch 
{ 

} 

string html = response.ToString(); 

如何測試「響應」,同時能夠在下面使用它?

回答

1
WebResponse response = null; 
try 
{ 
    response = request.GetResponse(); 
} 
catch 
{ 

} 

string html = response.ToString(); 

您收到一個編譯時錯誤,因爲你的變量是try..catch範圍內聲明和局部變量只能在其範圍內進行訪問。範圍基本上由開始和結束括號表示,括號內的所有內容都是範圍的一部分。

具體而言,當您調用request.GetResponse();時,會收到異常。

這意味着您可以放心地把變量try..catch範圍之外,並訪問它的方法,範圍和可以抓住可能被拋出你叫request.GetResponse();

+0

的結果我想,以及任何異常。然後我得到「使用未分配的本地變量'響應'」。 – muncherelli

+0

@muncherelli我更新了我的答案。初始化局部變量爲null。 –

+0

謝謝!說得通。 – muncherelli