各位兄弟,我知道这样有问题,现在我希望知道如果我就是想这样做,会出现什么问题,谢谢
Public Function DownloadStringByURL(ByVal URL As String) As String
        Dim errorCount As Integer = 0
        Return PrivateDownloadStringByURL(URL, errorCount)
    End Function    Private Function PrivateDownloadStringByURL(ByVal URL As String, ByRef errorCount As Integer) As String
        Application.DoEvents()
        Dim pageHtml As String = String.Empty
        If (errorCount > 10) Then
            Return pageHtml
        End If
        Try
            Dim web As New WebClient
            pageHtml = Encoding.UTF8.GetString(web.DownloadData(URL))
        Catch ex As Exception
            errorCount = errorCount + 1
            pageHtml = PrivateDownloadStringByURL(URL, errorCount)
        End Try        Return pageHtml
    End Function

解决方案 »

  1.   

    1:单从你这两个函数看来,你的ErrorCount不会有效果。
    因为你的errorCount虽然用ref的方式返回了,但你在调用DownloadString ByURL时每次都初始化了一个新的errorcount,所以
    if(errorCount>10)应当永远不会执行。2:你的异常处理没有问题。
      

  2.   


    不对吧,有下面一段代码呀,如果连续有十次catch的话,不就大于十了?
    Try
                Dim web As New WebClient
                pageHtml = Encoding.UTF8.GetString(web.DownloadData(URL))
            Catch ex As Exception
                errorCount = errorCount + 1
                pageHtml = PrivateDownloadStringByURL(URL, errorCount)
            End Try
      

  3.   

    谢谢关注
    To phy:
     Catch ex As Exception
                errorCount = errorCount + 1
                pageHtml = PrivateDownloadStringByURL(URL, errorCount)
            End Try我在这调的是PrivateDownloadStringByURL,并没有调DownloadString ,所以errorCount是累加的,可能会大于10的