PDA

Ver la Versión Completa : Captura de Errores


BuenaOnda
08-01-2007, 22:45:41
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, 23: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:


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, 23:57:20
Muchas Gracias... voy a probrar lo que me dices.. :)

Bicho
09-01-2007, 00:48:07
Hola, no se si viene a cuento o no, pero yo para saber exáctamente que error da, uso lo siguiente:


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, 14: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, 21: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, 21: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. :)