number new example error err error-handling vb6 ide

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 ...