Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Captura de Errores (https://www.clubdelphi.com/foros/showthread.php?t=39023)

BuenaOnda 08-01-2007 21:45:41

Captura de Errores
 
Hola amigos..

Nuevamente necesito de su ayuda, les cuento, necesito crear una funcion que captura todos los errores que sucedan en mi sistema, las estructuras TRY / EXCEPT / FINALLY capturan los errores, pero necesito saber el error exacto que ha ocurrido, cuando trabajaba en Visual Basic podía conocer el error exacto que sucedía y esto lo lograba obteniendo el número del error (err.num), alguien me podria indicar una manera parecida de poder lograr esto.

Muchas Gracias ;)

Lepe 08-01-2007 22:52:20

Usando un ApplicationsEvents (lo siento, no recuerdo en qué pestaña de la paleta de componentes está), puedes capturar todas las excepciones que pueden ocurrir.

Para detectar el error concreto, puedes usar el except:
Código Delphi [-]

try
   blahhh
except
  on E: DatabaseError do
  begin 
    // aqui controlas la excepción de tipo DAtabaseError
  end
  else on E: eOutofMemory do
  begin

  end
  else
  begin
    raise; // para el resto mostramos la excepción
  end;
end;
Normalmente tienes que saber qué tipo de excepción puede saltar, y eso lo sabes leyendo la ayuda sobre las funciones que estés usando dentro del try .. except.

Saludos

BuenaOnda 08-01-2007 22:57:20

Muchas Gracias... voy a probrar lo que me dices.. :)

Bicho 08-01-2007 23:48:07

Hola, no se si viene a cuento o no, pero yo para saber exáctamente que error da, uso lo siguiente:

Código Delphi [-]
  try
  except
     on e:exception do GrabaLog(e.message);
  end;
GrabaLog es un procedimiento que graba en un fichero de texto una linea con la fecha y hora exacta de la edición del fichero, junto con el mensaje del error, ocurrido. Así mis usuarios, me mandan el fichero log y yo analizo que tipo de error ocurre según el mensaje, que en mi caso suele ser muy genérico.

Saludos

BuenaOnda 09-01-2007 13:47:09

muchas gracias, pero no hay ninguna manera de saber el número del error, por ejemplo si el error fuera el numero 7 sabriamos que ha ocurrido un desbordamiento... gracias por su ayuda.

Lepe 09-01-2007 20:42:03

Ese código de error, depende directamente del tipo de excepción.

Por ejemplo, una excepción del tipo EDBEngineError (del antiguo BDE), si lleva un código numérico asociado a dicho error (la propiedad es E.ErrorCode), sin embargo, otro tipo de excepciones no lleva número asociado, sino solamente una cadena de texto que es una constante y que se llama cuando ocurre el error, como ya imaginas, de este tipo de excepciones no puedes obtener su código de error.

Saludos

BuenaOnda 09-01-2007 20:44:16

Muchas gracias.. Lepe.. eso es lo que busco un codigo que me indique el error que se ha generado..gracias por tu tiempo. :)


La franja horaria es GMT +2. Ahora son las 01:30:57.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi