一、webException的概念
System.Net.WebException類表示的是發生與http協議相關的錯誤時.NET Framework的異常。在.NET編程中,webException 是一種常見的異常,在開發過程中,我們需要了解該異常的性質及解決方式。
二、WebException的屬性
WebException中有很多屬性,下面我們一一介紹:
1. Response
獲取與此異常關聯的 WebResponse 實例。通常,如果發生異常,則沒有有效的響應對象;在這種情況下,此屬性返回 null。
try
{
//創建WebRequest對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
//獲取服務器響應
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
//關閉響應對象
resp.Close();
}
catch(WebException ex)
{
Console.WriteLine(ex.Response);
}
2. Status
獲取導致異常的 WebExceptionStatus 的值。
try
{
//創建WebRequest對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
//獲取服務器響應
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
//關閉響應對象
resp.Close();
}
catch(WebException ex)
{
Console.WriteLine("Status: {0}", ex.Status);
}
3. Message
獲取描述異常原因的消息。
try
{
//創建WebRequest對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
//獲取服務器響應
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
//關閉響應對象
resp.Close();
}
catch(WebException ex)
{
Console.WriteLine("Message: {0}", ex.Message);
}
三、WebException的處理方法
1. 使用try-catch捕獲異常
在編寫代碼時,我們可以使用try-catch語句捕獲WebException異常,並在catch語句塊中處理異常。
try
{
//創建WebRequest對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
//獲取服務器響應
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
//關閉響應對象
resp.Close();
}
catch(WebException ex)
{
Console.WriteLine(ex.Message);
}
2. 判斷異常類型處理異常
對於WebException異常,我們可以通過判斷其Status屬性的值來判斷異常的類型,然後進行相應的處理。
try
{
//創建WebRequest對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
//獲取服務器響應
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
//關閉響應對象
resp.Close();
}
catch(WebException ex)
{
if(ex.Status == WebExceptionStatus.ConnectFailure)
{
Console.WriteLine("沒有連接到服務器!");
}
else if(ex.Status == WebExceptionStatus.Timeout)
{
Console.WriteLine("超時!");
}
else
{
Console.WriteLine("其他錯誤!");
}
}
3. 測試與調試
在編寫代碼時,我們需要不斷測試和調試,查找潛在的問題。對於使用WebException異常時,我們需要特別關注以下幾項:
1. 是否存在網絡連通性問題;
2. 服務器是否正常運行;
3. 是否正確地指定了請求地址。
四、WebException示例
下面是一個使用WebException的示例:
try
{
//創建WebRequest對象
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com");
//獲取服務器響應
HttpWebResponse resp = (HttpWebResponse)request.GetResponse();
//關閉響應對象
resp.Close();
}
catch(WebException ex)
{
if(ex.Status == WebExceptionStatus.ConnectFailure)
{
Console.WriteLine("沒有連接到服務器!");
}
else if(ex.Status == WebExceptionStatus.Timeout)
{
Console.WriteLine("超時!");
}
else
{
Console.WriteLine("其他錯誤!");
}
}
參考資料:
1. MSDN: https://docs.microsoft.com/en-us/dotnet/api/system.net.webexception?view=netframework-4.8
2. CSDN: https://blog.csdn.net/weixin_43953584/article/details/108474318
原創文章,作者:ZGAUV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/371767.html