Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Saber en que SubRutina ocurrió un error

Estas en el tema de Saber en que SubRutina ocurrió un error en el foro de Visual Basic clásico en Foros del Web. Tengo una duda. Me gustaría saber en que subrutina se ha generado un error. Me explico, con el objeto Err puedo saber la descripción del ...
  #1 (permalink)  
Antiguo 27/06/2005, 12:58
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 2 meses
Puntos: 7
Pregunta Saber en que SubRutina ocurrió un error

Tengo una duda.
Me gustaría saber en que subrutina se ha generado un error. Me explico, con el objeto Err puedo saber la descripción del error y el número del error, pero no se que fue en la subrutina command1_click.

¿Cómo podría saber este dato?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #2 (permalink)  
Antiguo 27/06/2005, 13:08
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
1 - Usando el debugger si es en tiempo de ejecución.
2 - Añadiendo control de errores para detectarlos y que no te cuelguen todo el programa.
  #3 (permalink)  
Antiguo 27/06/2005, 13:26
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 2 meses
Puntos: 7
Podías darme un pequeño ejemplo?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #4 (permalink)  
Antiguo 27/06/2005, 14:06
 
Fecha de Ingreso: octubre-2004
Ubicación: COLOMBIA
Mensajes: 240
Antigüedad: 19 años, 6 meses
Puntos: 3
Cita:
Iniciado por RsOfT
Tengo una duda.
Me gustaría saber en que subrutina se ha generado un error. Me explico, con el objeto Err puedo saber la descripción del error y el número del error, pero no se que fue en la subrutina command1_click.

¿Cómo podría saber este dato?
Utiliza la función Erl.
Código:
Private Sub Command1()
On Error GoTo Errores
Dim A As Long, B As Long
1   A = 10
2   B = 0
3   MsgBox A / B
Exit Sub
Errores:
   MsgBox Err.Description & " Linea de error: " & Erl() 'La función Erl() se encarga de esto.
End Sub
En la siguiente rutina seguirias con 4, 5, 6 y asi lo que funciona es la funcion Erl la que te manda la linea de error.
  #5 (permalink)  
Antiguo 28/06/2005, 13:16
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 2 meses
Puntos: 7
Sería extremandamente tedioso numerar 162 formulario que tengo en mi proyecto

No habrá otra solución?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
  #6 (permalink)  
Antiguo 28/06/2005, 13:26
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación

Antes que todo.. explícame bien qué quieres.
Porque si el error se genera en Command1_Click
Lógicamente que ahí se detendrá tu aplicación.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 28/06/2005, 18:48
Avatar de RsOfT  
Fecha de Ingreso: marzo-2002
Ubicación: InterNET
Mensajes: 1.121
Antigüedad: 22 años, 2 meses
Puntos: 7
Lo que pasa es que en cada evento de mi aplicación tengo el "On Error Goto ResumenError". Son miles de subrutinas con On Error Goto ....

Entonces, si sucede cualquier error se ejecuta este pedaso de código:
Código:
ResumenError:
    Call RutinaError(Me)
Si te fijas, el pedaso de código llama la subrutina "RutinaError" y esta, aparte de avisar al usuario del error, genera un archivo con todos los detalles del error:
Ej. La fecha y hora en que se produjo, la cantidad de espacio en disco disponible, la cantidad de memoria disponible, el usuario de windows y el usuario de la aplicación, etc.

Luego yo me mantengo revisando estos archivos para ir mejorando mi aplicación, pero a veces es muy difícil saber exactamente en que subrutina dió el error y me gustaría saber de una forma genérica y sin tener que ir evento tras evento a ponerle a la subrutina "RutinaError" un parámetro que diga el nombre de la subrutina que lo está ejecutando.

Lo que me dice "RadicalEd" es bueno, podque me diría la línea, pero para implementarle tendría que numerar todas las líneas de código de todos mis formularios.

Si me pongo hacer eso, sería un suicidio,

¿Me expliqué bien?

En conclusión, lo que quiero es saber el nombre de la subrutina en que dió un error la aplicación de una forma genérica, algo así como: "Me.SubRutina.Name", jeje
¿Alguna Idea?
__________________
.::RsOfT::.
--El que se aferra a lo conocido, nunca conocerá lo desconocido--
--Es intentando lo imposible como se realiza lo posible--
--Es de pésimo gusto contentarse con algo mediocre cuando lo excelente está a nuestro alcance--
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:52.