Usted necesita controladores de errores, utilizando On Error Goto
, para que pueda ejecutar su propio código cuando se produce un error. (Por cierto en VB6 se llaman errores no excepciones.) La herramienta gratuita MZTools es excelente - puede insertar automáticamente el On Error Goto
y un controlador de errores que incluye el nombre de la rutina actual.
También necesita una rutina general que registre los detalles de error en un archivo, un poco como este a continuación. Advertencia de salud: acabo de tipear esto directamente sin probarlo (air code).
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
Sugerencia de bonificación: roll your own stack trace.
Bono sugerencia 2: apagar los controladores de errores en el IDE con algo como esto If Not IsInIDE() Then On Error Goto Handler
, utilizando la función de IsInIDE
here
http://articles.techrepublic.com.com/5100-10878_11-5798663.html Eso parece ser más o menos lo que quieres – johnnyArt
Gracias MarkJ. :) – Royson