Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Помогите с повторным вызовом процедуры Добавлено: 27.10.08 18:03  

Автор вопроса:  Jaychibek | ICQ: презираю 
Есть определенная задача вытащить отчеты через веб-сайт за определенную дату. Но возникает ситуация когда при таймауте система выдает ошибку. Соответственно номер ошибку отловил и поставил обработчик ошибки, но при повторном вызове процедуры (чтоб он повторил запрос за текущую дату) ошибка не исчезает и сразу же отлавливается обработчиком ошибки и выкидавает из процедуры и запускается заново что соответсвенно ситуация повторяется. Что можно сделать чтоб рекурсивно вызванная процедура работала?
Вкратце излагаю исходник процедуры

connection(ByVal strOutputPaths As String, ByVal strDate As String)
.........................................................................................................
 On Error GoTo Err_
.......................................................................................................
Dim MyHttpRequest As HttpWebRequest = HttpWebRequest.Create(strLinkName)
        Dim MyHttpResponse As HttpWebResponse = MyHttpRequest.GetResponse()
        Dim MyStream As New StreamReader(MyHttpResponse.GetResponseStream)

        MyHttpRequest.Credentials = New NetworkCredential(strUserLogin, strUserPassword)

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3
        ServicePointManager.CertificatePolicy = New MyCertificateValidation

        MyHttpRequest.Method = "GET"
        MyHttpRequest.ContentType = "application/x-www-form-urlencoded"
        MyHttpRequest.Headers.Add("Accept-Encoding", "")
        MyHttpRequest.Timeout = 120000

        MyHttpRequest.Proxy = New WebProxy("MyProxy", MyPort)
        MyHttpRequest.Proxy.Credentials = CredentialCache.DefaultCredentials

        clsMyStreamWriter = File.AppendText(strPathName)
        clsMyStreamWriter.Write(MyStream.ReadToEnd)
        clsMyStreamWriter.Flush()
        clsMyStreamWriter.Close()
        'If MyStream.EndOfStream Then MessageBox.Show("Поток скачан")
        MyStream.Close()
        MyHttpResponse.Close()
        MyHttpResponse.Close()
        'MsgBox(MyStream.ReadToEnd)
        Exit Sub
Err_: Select Case Err.Number
            Case 5 : Err.Clear(): connection(frmMegaReport.txtOutputPathName.Text, strMegaDate)
end sub
[/code]

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #1 Добавлено: 27.10.08 18:49
On Error GoTo Err_

Для начала не плохо было бы тебе почитать про обработку ошибок в NET и класс System.Exception, затем поправить свой код в соответствии с полученными знаниями, затем хорошо бы получить развернутое описание ошибки и номер строки в которой возникает ошибка. Ну а после этого можно уже детально поговорить о твоей проблеме..

Ответить

Номер ответа: 2
Автор ответа:
 Jaychibek



ICQ: презираю 

Вопросов: 10
Ответов: 20
 Профиль | | #2 Добавлено: 27.10.08 19:38
  1.  
  2. try
  3. ......
  4. catch exception as system.exception
  5. ........
  6. end try

?

Ответить

Номер ответа: 3
Автор ответа:
 Jaychibek



ICQ: презираю 

Вопросов: 10
Ответов: 20
 Профиль | | #3 Добавлено: 27.10.08 19:39
выходит методом обработки исключительных ситуация надо делать?

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 27.10.08 21:35
ВО всяком случае этот подход правильный и он тебе позволит узнать детали самой ошибки и строку кода где возникает ошибка. Останется только узнать ПОЧЕМУ она возникает.. Кроме того, ты из тела процедуры вызываешь эту же процедуру - это называется рекурсия(в твоем случае это не лучший способ. Правильней было бы реализовать цикл через do... while. В котором вести,скажем, число попыток. Если, к примеру, после 5 попыток скачать не удалось, значит вываливаем юзеру сообщение об ошибке и выходим из этой процедуры). В случае ошибки у тебе происходит зацикливание и как следствие - переполнение стека (имхо: именно в этом твоя ошибка и заключается)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам