2015-11-12 28 views
0

我是C#的新手,正在研究從Web刮取URL的窗口應用程序。應用程序需要Internet連接才能收集來自Internet的URL。問題是什麼時候發生,當沒有互聯網連接。並且應用程序顯示這種類型的錯誤。如何在C#中顯示messagebox當HttpWebResponse無法連接到服務器/互聯網

型 'System.Net.WebException' 發生在 System.dll中的附加信息的未處理的異常:遠程名稱不能被 解決: 'www.google.com'

的問題是我寫的代碼告訴用戶,沒有互聯網連接。而不是顯示這種類型的Bug。 這是我正在處理的代碼。

listBox1.Items.Clear(); 
      StringBuilder sb = new StringBuilder(); 
      byte[] ResultsBuffer = new byte[8192]; 
      string SearchResults = "http://www.google.com/search?num=1000&q=" + txtKeyWords.Text.Trim(); 
      HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SearchResults); 
      HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
      Stream resStream = response.GetResponseStream(); 
      string tempString = null; 
      int count = 0; 
      do 
      { 
       count = resStream.Read(ResultsBuffer, 0, ResultsBuffer.Length); 
       if (count != 0) 
       { 
        tempString = Encoding.ASCII.GetString(ResultsBuffer, 0, count); 
        sb.Append(tempString); 
       } 
      } 
      while (count > 0); 
      string sbb = sb.ToString(); 

      HtmlAgilityPack.HtmlDocument html = new HtmlAgilityPack.HtmlDocument(); 
      html.OptionOutputAsXml = true; 
      html.LoadHtml(sbb); 
      HtmlNode doc = html.DocumentNode; 

      foreach (HtmlNode link in doc.SelectNodes("//a[@href]")) 
      { 
       //HtmlAttribute att = link.Attributes["href"]; 
       string hrefValue = link.GetAttributeValue("href", string.Empty); 
       if (!hrefValue.ToString().ToUpper().Contains("GOOGLE") && hrefValue.ToString().Contains("/url?q=") && hrefValue.ToString().ToUpper().Contains("HTTP://")) 
       { 
        int index = hrefValue.IndexOf("&"); 
        if (index > 0) 
        { 
         hrefValue = hrefValue.Substring(0, index); 
         listBox1.Items.Add(hrefValue.Replace("/url?q=", "")); 
        } 
       } 
      } 
+0

嘗試尋找到異常處理https://msdn.microsoft.com/ library/ms229005(v = vs.100).aspx – MattC

+0

* try-catch *會捕獲「bug」並給你顯示一個消息框的空間,說沒有互聯網 –

+0

@SethKitchen你可以參考這裏的代碼嗎? – Shah

回答

0

你可以做這樣的事情:

//Include everything that could possibly throw an exception in the try brackets 
try 
{ 
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(SearchResults); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    Stream resStream = response.GetResponseStream(); 
} 
catch (Exception e) // Here we are catching your bug-the unhandled exception 
{ 
    MessageBox.Show("You do not have an internet connection"); 
} 

這是爲什麼我的答案是不完整的,需要您提供更多的工作:還有比只是沒有互聯網,你可以得到更多的例外。這個嘗試捕獲將捕獲所有這些。您需要查找每個可能的異常並相應地處理它。

+1

感謝您的回覆。你讓我今天一整天都感覺很好。它實際上工作。 – Shah

0

第一次嘗試根據你的錯誤趕上特殊的例外則一般用於捕獲可能發生的任何其他錯誤,check out thisthis

try 
    { 
     //your code here 
    } 
    catch (WebException ex) 
    { 
     MessageBox.Show("No internet available"); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show("Error has occured"); 
    } 
+1

也感謝Emad。 – Shah

相關問題