error handling - new - ¿Por qué los errores en las clases solo quedan atrapados en el tiempo de ejecución?
on error resume next vba (2)
Tengo una clase VB6 con un método que genera un error:
Public Sub DoSomething
...
err.Raise 12345, description:="Error message"
...
End Sub
Este método se llama desde un formulario:
Public Sub ErrTest()
On Error Goto err1
obj.DoSomething
Exit Sub
err1:
MsgBox err.Description
End Sub
Esto funciona bien en tiempo de ejecución, pero en el momento del diseño, el manejo de errores no funciona. En cambio, el IDE VB6 muestra su cuadro de mensaje estándar desde donde puedo pasar al modo de depuración o finalizar el programa.
¿Por qué pasó esto? ¿Puedo prevenirlo?
En el IDE de VB, vaya a Herramientas, Opción, pestaña General, Marco de captura de errores. Supongo que lo tiene configurado para ''Romper todos los errores'', mientras que probablemente quiera ''Romper los errores no controlados''.
Su declaración Err.Raise
da un error de compilación; intente quitar las llaves.
Además, es posible que desee utilizar
Err.Raise vbObjectError + 12345, Description:="Error message"
es decir, compensar el código de error de la constante vbObjectError de VB para asegurarse de que no se producen conflictos.
También puede cambiar las opciones de captura de errores haciendo clic derecho en la ventana de código. Las siguientes opciones están disponibles desde el submenú "Alternar":
Rompe todos los errores
Break in Class Module
Romper los errores no controlados
Encuentro esto mucho más fácil que abrir el cuadro de diálogo Opciones ...