Что может заставить VB6 выдавать ошибку, которая не обрабатывается обработчиком ошибок? - PullRequest
0 голосов
/ 25 февраля 2020

У меня есть несколько строк кода, обернутых в два события записи журнала. Я знаю, что первая часть кода происходит, потому что я вижу первую запись в журнале, в которой говорится, что процесс запущен, но запись, в которой говорится, что завершенный процесс, не записывается. Где-то в коде выдается ошибка, но обработчик ошибок по какой-то причине не перехватывает ее. Я пытался проверить вьюер событий на наличие каких-либо журналов о моем приложении, которые, возможно, написали Windows, например, оно вызвало взлом sh или Windows по некоторым причинам, но там ничего нет. Есть ли способ, которым VB6 пропустил бы обработчик ошибок, и если так, как я мог бы найти доказательства этого?

Мой код выглядит примерно так:

On Error GoTo ErrorHandler

    Dim fso As FileSystemObject
    Dim DirPattern As String
    Dim FileName As String
    Dim DaysOld As Integer

    ' Init log name to ensure Today's value will be put in there
    g_PurgeLogName = ""

    Call WriteToLog("Purging of Text Files Started")

    sql = "SELECT * FROM [Text File Purge Profiles] " & _
            "WHERE User = '" & g_User & "' " & _
            "ORDER BY ProfileName;"

    Dim rs As ADODB.Recordset
    Set rs = ic.RsReadOnly(cnMF, sql)

    With rs
        Do While Not .EOF

            Set fso = New FileSystemObject

            ' create dirPattern to use with "Dir" command
            DirPattern = fso.BuildPath(!PurgePath, !FileMask)

            ' get first file matching this pattern
            FileName = Dir(DirPattern)

            Do While Len(FileName)

                FileName = fso.BuildPath(!PurgePath, FileName)

                ' how many days ago was this file created?
                DaysOld = DateDiff("d", fso.GetFile(FileName).DateCreated, Now)

                If DaysOld > !RetainDays Then
                    Debug.Print "Deleting " & FileName
                    fso.DeleteFile FileName, True
                    DoEvents
                End If

                ' get next file matching this pattern
                FileName = Dir
            Loop
            .MoveNext
        Loop
        .Close
    End With

    Call WriteToLog("Purging of Text Files Completed")

    Set fso = Nothing
    Set rs = Nothing

    Exit Sub

'=============
ErrorHandler:
'=============

    Call MsgBox2("An error occured while trying to process the Text File purge" & _
                    vbLf & vbLf & err.Number & ": " & err.Description, vbCritical)

    Call WriteToLog("Text File Purge did not complete")
    Call WriteToLog(vbTab & err.Number & ": " & err.Description)
    Call ClearScreen
    Call err.Clear

Я вижу, что там могут быть проблемы с удалением файлов, к которым у программы нет прав доступа, или что с запросом может быть проблема, но, насколько я могу судить, любые проблемы, которые могут возникнуть, должны обрабатываться обработчиком ошибок, а журнал еще больше текста, чем бит "процесс запущен".

...