El AddIn ProcErr es un complemento para Visual Basic 6 con las siguientes funciones:

  • Inserción y eliminación de código para manejo de errores.
  • Visualización fácil de los distintos procedimientos.
  • Inserción y eliminación de números de línea.
  • Visualización de los procedimientos que llaman a uno dado (dependencias internas)
  • Referencias del proyecto con la ubicación de su archivo y el Guid.

Extremadamente útil a la hora de analizar un proyecto e incluir una gestión de errores automatizada de forma global. Emplea la clase clsErrores (para gestionar los errores) y el modulo InfoSistema.bas (para recuperar una extensa información sobre el sistema, tal como Sistema Operativo, lenguaje, periféricos, etc), que pueden usarse independientemente.

Aunque he seguido un proceso de depuración y comprobación bastante exhaustivo, antes de utilizar el AddIn es recomendable hacer una copia de seguridad del proyecto. Este AddIn es gratuito, pero no me hago responsable de su utilización o mal funcionamiento. Su manejo es sencillo. Desde la barra de menús del entorno de Visual Basic pulsamos en Complementos / Administrador de complementos y allí cargamos el complemento (add-in) llamado "ProcErr Oliware"

Una vez cargado el Add-In se nos mostrará su formulario principal en el que aparecen dos listas, una con los módulos del proyecto y otra con los procedimientos de ese módulo. Al seleccionar un módulo (ya sea de formulario, normal o de clase) se nos mostrará en la lista de la derecha todos los procedimientos de ese módulo (excepto procedimientos Property Set, Get y Let)., indicando si ya tienen un manipulador de errores o no (para ello mira si en el procedimiento hay alguna sentencia On Error)

Haciendo doble clic en cualquier procedimiento se nos abrirá otra ventana con fondo amarillo y con el código fuente correspondiente a ese elemento. Además se nos mostrará el módulo seleccionado en la propia IDE de Visual Basic. También se nos abrirá esta ventana pulsando en la barra de menús Utilidades/Ver Código. Pulsando desde esta ventana en el botón Dependencias se nos mostrará una relación de todos los procedimientos que llaman a un método con el mismo nombre que el mostrado (es posible que llamen a otro distinto con el mismo nombre)

Podemos elegir en qué procedimientos se efectuarán las inserciones de números de línea y del manipulador de errores, seleccionando uno o más procedimientos en la lista de la derecha y pulsando los botones Insertar o Quitar. También podemos habilitar el check-box Todos los procedimientos con lo que resultarán afectados todos los procedimientos del módulo seleccionado.

Para insertar o quitar el manipulador de errores, seleccionamos el botón de opción Manejo de errores y después pulsaremos los botones Insertar o Quitar, según el caso. De igual modo insertaremos o quitaremos los números de línea y las sentencias On Error Resume Next. Si ya existe algúna sentencia On Error en un procedimiento no se añadirá ningún manejador de errores desde el complemento.

Pulsando en la barra de menús Utilidades/Referencias nos aparecerá una ventana con el nombre del proyecto y todas sus referencias en un ListBox. Pulsando una referencia se nos mostrará su versión, la ubicación del archivo o dlly su Guid.

Desde la barra de menús Utilidades / Controles podremos visualizar para cada formulario que seleccionemos todos sus controles junto a cada una de sus propiedades. Esta información podremos copiarla y pegarla en el portapapeles.

Podemos configurar el modo de comportamiento del manipulador de errores pulsando Configurar en la barra de menús.

El manejo de errores del Add-In ProcErr está realizado con el propio Add-In y configurado para mostrar un MsgBox y mandarme un email cada vez que ocurra un error al utilizarlo, por lo que, en caso de que ocurra, ruego a quien lo esté usando permita el envío del email. Igualmente se agradecerá cualquier sugerencia relativa a la mejora del complemento o notificación de bugs.

Funcionamiento del manipulador de errores:

Podemos introducir números de línea y dos tipos de manipuladores:

  • Resume Next. Introduce una simple línea On Error Resume Next al principio del procedimiento indicado. No necesita la clase clsErrores ni el módulo InfoSistema.bas, y por tanto no registra el error cometido ni lo manipula.
  • clsErrores.- Introduce un manipulador basado en la clase clsErrores, el cual, después de registrar el error producido según la configuración, hará una de las tres acciones elegidas: Salir del procedimiento, ResumeNext ó Err.Raise.

La primera vez que es insertado este manipulador en el proyecto, se añadirán 2 módulos al proyecto: la clase clsErrores.cls, que es el manejador principal de errores, y el módulo InfoSistema.bas, que recolecta información acerca del ordenador del usuario final donde se produzca el error.

Si ya existe algúna sentencia On Error en un procedimiento no se añadirá ningún manejador de errores desde el complemento.

El manipulador basado en la clase clsErrores, se encarga de crear un registro de la pila de llamadas y puede almacenar en el archivo Errores.log (creado en el directorio del ejecutable) todos los errores ocurridos en el ordenador. Además es posible configurar la clase para que se envíe un email a la dirección indicada con información sobre los errores ocurridos y la configuración del sistema del usuario. También se puede elegir presentar o no un MsgBox con información sobre el error. Esta información podrá contener números de línea siempre y cuando éstos se hayan insertado antes.

Configuración

Pulsando en Utilidades/Configuración nos aparecerá un formulario con las siguientes opciones:
Mandar EMail OnError: Si se habilita el check-box, cada vez que ocurra un error en el ordenador del usuario se enviará un email a la dirección que se haya especificado en el text box etiquetado como Dirección de correo de destino. Todo código presente en un manipulador de errores está en una situación algo crítica como resultado del propio error, por lo que no es muy conveniente encomendarle demasiado trabajo. Es por esta razón por lo que no aconsejo esta opción a no ser en proyectos determinados, tales como versiones beta, etc.
MsgBox OnError.- Aquí podremos decidir no presentar ningún MsgBox en caso de error, presentar un MsgBox normal con el nº de error, el nº de línea, la descripción del error y el nombre del módulo donde se ha producido. Si selecciona Personalizado podrá elegir qué texto quiere que aparezca en el MsgBox.
LogOnError
.- Esta opción indica si grabar la información de los errores en el archivo de texto creado en la misma carpeta donde reside el ejecutable (si no ha sido modificada la propiedad Destination de la clase por el programador)

Los cambios hechos en la configuración de la clase se reflejarán al inicializarse la clase por lo que se aplicarán a todos los manipuladores añadidos con el complemento.

Personalización

El manipulador de errores al ocurrir un error se limita, según esté configurado, a registrarlo en el archivo Errores.log a presentar un MsgBox con los datos del error y a enviarnos un email. Después sale del procedimiento, por lo que equivale a un Exit Sub. Si queremos para un procedimiento particular efectuar alguna otra acción (alguna acción dependiendo del nº de error, Resume Next, etc) , tendremos que insertar el código manualmente después de la etiqueta lblError y la llamada al método glbErr.ManejoError.