VB6-как создать файл журнала в VB6 при запуске приложения - PullRequest
5 голосов
/ 13 января 2010

Я хочу регистрировать исключения, возникшие во время выполнения моего приложения. До этого я занимался этим с окном сообщений. Я новичок в VB 6.

Пожалуйста, предоставьте пример кода для создания файла журнала и сохранения сообщений об исключениях.

Спасибо ..

1 Ответ

8 голосов
/ 13 января 2010

Вам нужны обработчики ошибок, использующие On Error Goto, чтобы вы могли выполнять свой собственный код при возникновении ошибки. (Кстати, в VB6 они называются ошибки не исключения .) Бесплатный инструмент MZTools превосходен - он может автоматически вставлять On Error Goto и обработчик ошибок, который включает в себя имя текущей процедуры.

Вам также нужна общая процедура, которая записывает подробности об ошибках в файл, как показано ниже. Предупреждение о вреде для здоровья - я только что набрал это прямо, не проверяя его ( код воздуха ).

Sub MySub()
  On Error Goto ErrHandler
  '... Do something ...'
  On Error Goto 0
  Exit Sub

ErrHandler:
  Call LogError("MySub", Err, Error$) ' passes name of current routine '
End Sub 

' General routine for logging errors '
Sub LogError(ProcName$, ErrNum&, ErrorMsg$)
  On Error Goto ErrHandler
  Dim nUnit As Integer
  nUnit = FreeFile
  ' This assumes write access to the directory containing the program '
  ' You will need to choose another directory if this is not possible '
  Open App.Path & App.ExeName & ".log" For Append As nUnit
  Print #nUnit, "Error in " & ProcName
  Print #nUnit, "  " & ErrNum & ", " & ErrorMsg
  Print #nUnit, "  " & Format$(Now)
  Print #nUnit
  Close nUnit
  Exit Sub

ErrHandler:
  'Failed to write log for some reason.'
  'Show MsgBox so error does not go unreported '
  MsgBox "Error in " & ProcName & vbNewLine & _
    ErrNum & ", " & ErrorMsg
End Sub

Бонусное предложение: бросьте свой собственный след стека .
Предложение бонуса 2: отключите обработчики ошибок в IDE с помощью чего-то вроде If Not IsInIDE() Then On Error Goto Handler, используя функцию IsInIDE из здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...