Autor Tema: Localizar error. Número de línea  (Leído 2947 veces)

Desconectado xavi

  • Administrador
  • Habitual
  • *****
  • Mensajes: 220
Localizar error. Número de línea
« en: Abril 28, 2020, 01:38:10 pm »
Palabras clave: control errores, línea
Autor: xavi
Extraído de: experiencia

Objetivo:
Localizar la línea del error exacta.

En nuestras aplicaciones a veces es necesario no solo controlar el error y devolver la respuesta adecuada. En algunos casos podemos recibir el "feedback" de un cliente con un error pero no es posible saber cual de las líneas de código ha sido la que ha generado el error.

En desarrollo, dentro de mi control de errores, ya está preparado para que, en caso de error, el código de pare (Stop) y a continuación vaya a la línea del error (Resume). El problema es en el cliente dónde no interesa mostrar ciertas cosas. En ese caso estaría bien poder recuperar la línea del error y que el cliente nos la comunicara.

¿Y cómo se obtiene la línea de error?
Pues ("back to the past") ¡numerando las líneas! y recuperando el número de línea con la propiedad Erl.
Algunos no lo habréis visto nunca y otros no numeran una línea desde que dejaron GWBasic.

¿Y cómo numero las lineas? Porque mi aplicación tiene miles de líneas...
La mejor forma si no quieres dejarte las uñas en el teclado es utilizar una herramienta externa: MZ-Tools

Esa herramienta permite poner y quitar números de línea de forma muy sencilla. El alcance de esa utilidad es el que nosotros queramos: desde un procedimiento hasta un grupo de proyectos.

¿Y cuando hago eso?
Pues yo lo haría justo antes de entregar la aplicación al cliente.

¿Es cómodo trabajar con números de línea puestos?
La verdad es que es un engorro porque cualquier nueva línea deberá tener su número. Lo mejor es quitar todos los números de línea del proyecto cuando se tenga que editar el código, modificar y volver a poner números de línea. Dado que los números de línea sólo sirven para la propiedad Erl, no debería representar un problema (a diferencia del pasado dónde los GoTo se hacían por número de línea).

¿Cómo utilizo Erl?
Muy sencillo. Dentro del control de errores, la propiedad Erl devuelve el número de línea. Si no hay números de línea, devuelve 0.

MsgBox "Error en línea: " & Erl & vbNewLIne & Err.Number & " - " & Err.Description

Dicho todo esto, yo nunca he numerado líneas  8)
« Última modificación: Mayo 04, 2020, 11:28:30 am por xavi »