• Viernes 15 de Noviembre de 2024, 07:21

Autor Tema:  Re: Objeto Error  (Leído 3000 veces)

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
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

:ayuda::ayuda::ayuda:
Pablo Tilotta
Analista de Sistemas
Argentina

chiaravel

  • Miembro MUY activo
  • ***
  • Mensajes: 242
    • Ver Perfil
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.

:adios:
Pablo Tilotta
Analista de Sistemas
Argentina

acalanto

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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
    • Ver Perfil
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 ?

:beer:
Pablo Tilotta
Analista de Sistemas
Argentina

acalanto

  • Miembro activo
  • **
  • Mensajes: 80
    • Ver Perfil
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
    • Ver Perfil
Objeto Error
« Respuesta #13 en: Miércoles 6 de Agosto de 2003, 20:35 »
0
Igualmente, solo debo agradecerte.

Un Abrazo

:bravo:
Pablo Tilotta
Analista de Sistemas
Argentina