Viernes 15 de Noviembre de 2024, 10:42
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Objeto Error
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: Objeto Error (Leído 3001 veces)
chiaravel
Miembro MUY activo
Mensajes: 242
Re: Objeto Error
«
en:
Martes 5 de Agosto de 2003, 15:22 »
0
Hola Amigos.
Tengo toda una Aplicacion de Comunicaciones que me esta dando problemas y errores de ejecucion, pero a la hora de depurar esos errores me encuentro con el maldito objeto error.
Lo unico bueno que puede hacer este objeto es darme un Nro.de error y un mensaje, pero yo necesito saber cual es la instruccion que falla ya que el famoso ON ERROR GOTO xxxxx se dispara automaticamente sin que uno pueda saber desde que linea se disparo.
Yo podria colocar en cada linea una variable y ir numerandola cosa de leer ese numero en la rutina de error, pero eso es del tiempo de las cavernas, y calculo que habiendo tantos controles espectaculares y sofisticados, el VB tenga un objeto Error tan malo.
Si alguno conoce otro objeto que se pueda usar o algun truco para manejar esto, PLEASE ....Ayudenme.
Muchas Gracias
Tweet
Pablo Tilotta
Analista de Sistemas
Argentina
chiaravel
Miembro MUY activo
Mensajes: 242
Re: Objeto Error
«
Respuesta #1 en:
Martes 5 de Agosto de 2003, 16:00 »
0
Antes de que aconsejen el uso del depurador o Debuging les cuento que esta aplicacion se deja corriendo toda la noche para que al dia siguiente a la manana cuando nosotros llegamos , tenemos toda la informacion transmitida (por la noche) de nuestras sucursales.
Por ese motivo no estamos presentes durante la ejecucion de la aplicacion.
Pablo Tilotta
Analista de Sistemas
Argentina
acalanto
Miembro activo
Mensajes: 80
Re: Objeto Error
«
Respuesta #2 en:
Martes 5 de Agosto de 2003, 17:42 »
0
Pufff verdaderamente nos metemos de lleno en un tema realmente complejo..el tratamiento de los errores y mucho más si lo que deseamos es que estén desatendidos (Tu aplicación de comunicaciones que puede fallar por 20001 razones que nada engan que ver con el código).
El único consejo que se me ocurre es que procures dar a la aplicación la mayor robustez posible e intentar que ella misma salga airosa de las situaciones de error.
No existe posibilidad de que conozcas la sentencia en la que se ha producido el error (ErrorLine y ErrorDesxription), salvo que escribas el código como en los primeros Basic
10 hago esto
20 hago esto otro
30 lo de más llá
...etc
En una aplicación que tengo para seguimiento de túneles (Instalada en diversos clientes dispersos geográficamente) relalizé un tratamiento mas o menos primitivo pero que me da buen resultado ante posibles errores P. EJ.
OPTION EXPLICIT
PUBLIC PROCNAME AS STRING
SUB UNPROCEDIMIENTO(PAR1 AS BYTE, PAR2 AS VARIANT)
ON LOCAL ERROR RESUME CAPTURAERROR
PROCNAME="UNPROCEDIMIENTO"
PROC001:
CODIGO
CODIGO
CODIGO
PROC002:
MASCODIGO
MASCODIGO
PROC003:
MASCODIGO
MASCODIGO
EXIT SUB
CAPTURAERROR:
MSGBOX "ERROR: "+CSTR(ERR)+" EN ETIQUETA: " +CSTR(ERR.LINE)+ "EN PROC/FUNC: " + PROCNAME
<AQUI LO QUE DESEES REALIZAR PARA TRATAR EL ERROR>
END SUB
Esto te permite conocer en que proceso y entre que etiquetas se ha producido el error y así revisar el código para eliminar los posibles Bugs. (Si es que tiene alguno)
En tu caso el error se puede producir, no por un error de código, sino por un fallo en las comunicaciones, protocolos, módem etc. etc.
Yo te aconsejaría que uses la variante RESUME NEXT y si detectas un error provocado por causas ajenas al código (Es decir fallo en comunicación, el equipo de la delegación está ocupado etcetc), generas un fichero de LOGS en el cual introduces la delegación, los datos no enviados e incluso el número de error y etiqueta en al que se produce.
Acto seguido pasaas a la siguiente delegación y así sucesivamente.
Cuando termine la última, la aplicación deberá de revisar si hay cosas en el fichero log (Una epsecie de COLA DE IMPESIÖN). Si es así relizar un nuevo intento y en caso de no conseguirlo, por la mañana tendrás un informe detallado de todo aquello que no ha podido enviar y tomar las medidas correctoras oportunas.
Espero haberte ayudado
Un saludo
-Acalanto-
END SUB
chiaravel
Miembro MUY activo
Mensajes: 242
Re: Objeto Error
«
Respuesta #3 en:
Martes 5 de Agosto de 2003, 17:53 »
0
En cuanto al RESUME NEXT y al manejo de un archivo LOG con toda la informacion, y al reintentar la comunicacion cuando algo falle, estamos de acuerdo.
De hecho la aplicacion esta disenada de esa manera.
En cuanto al ejemplo que vos me indicas, te cuento que el objeto ERROR no tiene ninguna propiedad ERR.LINE.
Agradezco mucho tu ayuda.
Un Abrazo
Pablo Tilotta
Analista de Sistemas
Argentina
acalanto
Miembro activo
Mensajes: 80
Re: Objeto Error
«
Respuesta #4 en:
Martes 5 de Agosto de 2003, 19:48 »
0
Perdona, me he equivocado por hacerlo al vuelo y de memoria.
La sentencia que devuelve la línea o la etiqueta más próxima a la que se produce el error es:
ERL
Espero que esto si te sirva y perdona la confusión
Un saludo
-Acalanto-
chiaravel
Miembro MUY activo
Mensajes: 242
Re: Objeto Error
«
Respuesta #5 en:
Miércoles 6 de Agosto de 2003, 16:18 »
0
Te hago una pregunta ya que no conozco la instrucion ERL.
Si o si hay que numerar las instrucciones para que este comando funcione ?
Ejem
10 a=1
20 for i = a to 200
50 next i
Muchas Gracias por ayudarme.
Un Abrazo
Pablo Tilotta
Analista de Sistemas
Argentina
chiaravel
Miembro MUY activo
Mensajes: 242
Re: Objeto Error
«
Respuesta #6 en:
Miércoles 6 de Agosto de 2003, 16:24 »
0
Disculpa,
Pero estoy consultando el MSDN y no encuentra ninguna instruccion, funcion, propiedad, metodo o evento que se llame ERL.
estara mal escrito ?
Un Abrazo
Pablo Tilotta
Analista de Sistemas
Argentina
acalanto
Miembro activo
Mensajes: 80
Re: Objeto Error
«
Respuesta #7 en:
Miércoles 6 de Agosto de 2003, 19:31 »
0
No, está bien escrito. Yo lo tengo en una aplicación y me funciona.
Lo que hago es poner una serie de etiquetas con una secuencia numerada más o menos lógica y ERL me proporciona la etiqueta más cercana tras la que se produce el error. De esta manera puedes acotar porciones de código y con el número de error seguro que encuentras la razón o razones.
Un saludo
-Acalanto-
chiaravel
Miembro MUY activo
Mensajes: 242
Re: Objeto Error
«
Respuesta #8 en:
Miércoles 6 de Agosto de 2003, 19:34 »
0
Que Visual Basic usas ?
Me podrias dar un breve ejemplo de la sintaxis ?
Es que busque por todos lados y no encuentro ERL como nada.
Muchas Gracias
Pablo Tilotta
Analista de Sistemas
Argentina
acalanto
Miembro activo
Mensajes: 80
Re: Objeto Error
«
Respuesta #9 en:
Miércoles 6 de Agosto de 2003, 19:45 »
0
Me has creado dudas ya que la aplicación comentada está escrita en VB5, peor lo acabo de probar en VB6 y funciona perfectamente bien.
Pon este código en un formulario y verás que va a las mil maravillas (Esta propiedad no está documentada como otras muchas cosas en Microsoft).
Un saludo
-acalanto-
acalanto
Miembro activo
Mensajes: 80
Re: Objeto Error
«
Respuesta #10 en:
Miércoles 6 de Agosto de 2003, 19:46 »
0
'esto en módulo de declaraciones públicas...
Public ProcedureName As String
Private Sub Form_Load()
On Local Error GoTo captura_error
ProcedureName = "Form_Load::" + Me.Name
1001:
Me.Top = 5
Me.Left = -10
1002:
Dim a
a = 20 / 0
1003:
Dim p As String
Dim q As String
p = "Esto es una cadena para producir un error"
q = Mid(p, 0, 12)
'Salimos para que la propia captura no genere un error
Exit Sub
captura_error:
MsgBox "Error: " + CStr(Err) + " en linea: " + CStr(Erl) + vbCrLf + vbCrLf + Err.Description + vbCrLf + vbCrLf + "PROC: <" + ProcedureName + ">"
Resume Next
End Sub
chiaravel
Miembro MUY activo
Mensajes: 242
Re: Objeto Error
«
Respuesta #11 en:
Miércoles 6 de Agosto de 2003, 20:21 »
0
Lo probe y estuvo todo OK.
Te agradezco mucho..
Sinceramente me maree un poco cuando no encontre ERL en el MSDN.
Un Abrazo
PD : Conoces algun metodo o utilidad para numerar las lineas de codigo de un proyecto, para no tener que ir una por una renumerandolas ?
Pablo Tilotta
Analista de Sistemas
Argentina
acalanto
Miembro activo
Mensajes: 80
Re: Objeto Error
«
Respuesta #12 en:
Miércoles 6 de Agosto de 2003, 20:33 »
0
Lo siento, no tengo conocimiento de una utilidad así pero creo que no sería demasiado difícil confeccionar un Addin que lo hiciera.
Si veo algo te lo comunico.
Un saludo
-acalanto-
chiaravel
Miembro MUY activo
Mensajes: 242
Objeto Error
«
Respuesta #13 en:
Miércoles 6 de Agosto de 2003, 20:35 »
0
Igualmente, solo debo agradecerte.
Un Abrazo
Pablo Tilotta
Analista de Sistemas
Argentina
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Visual Basic 6.0 e inferiores
(Moderador:
F_Tanori
) »
Re: Objeto Error