2013-08-25 59 views
1

嗨我使用下面的代碼來檢查5個網址,但如果前:網址沒有3是404沒有找到代碼將停止檢查第4個網址,無論如何,我可以做的代碼運行直到網址列表完成?代碼停止,如果404沒有找到

private void button2_Click(object sender, EventArgs e) 
    { 
     try 
     { 
       for (i = 0; i < listBox1.Items.Count; i++) 
       {  
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(listBox1.Items[i].ToString()); 
        if (response.StatusCode == HttpStatusCode.OK) 
        { 
         listBox3.Items.Add(listBox1.Items[i].ToString()); 
        } 
       } 
     } 
     catch (WebException x) 
     { 
     } 
    } 
+0

我不認爲之前調用你會得到'404''request.GetResponse' – I4V

+0

是的,我刪除了一些代碼:) – terrala7

回答

1

可能會在您的應用程序的request.GetResponse()部分中拋出異常。

但無論如何,在你的代碼後,異常編譯器將打破循環,因爲你的try/catch在你的循環之外。因此,改變你的代碼:

private void button2_Click(object sender, EventArgs e) 
    { 
     for (i = 0; i < listBox1.Items.Count; i++) 
     {  
      try 
      { 
       HttpWebRequest request = (HttpWebRequest)WebRequest.Create(listBox1.Items[i].ToString()); 
       if (response.StatusCode == HttpStatusCode.OK) 
       { 
        listBox3.Items.Add(listBox1.Items[i].ToString()); 
       } 
      } 
      catch(Exception) 
      { 
       // do whatever you want 
      } 
     } 
    } 
+0

由於它的工作原理,但試圖真的應該在那裏? – terrala7

+0

是的。但是@ I4V對你的問題發表了評論,在調用'request.GetResponse'之前你不能得到'404'異常。另外,'listBox1.Items [i] .ToString()'的值是什麼,會導致異常? –

+0

某些網址,如果該網站無法訪問或404未找到,可能還有其他一些錯誤,如禁止狀態。 – terrala7

0

將異常處理移到循環中。那樣如果有例外,你不會跳出循環。