Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Excepcion en todo el proyecto (https://www.clubdelphi.com/foros/showthread.php?t=22664)

RJF 22-06-2005 19:07:19

Excepcion en todo el proyecto
 
Como puedo hacer para detectar cualquier excepcion en todo el proyecto ?. Es posible esto ? ponerlo en algun evento o similar, si no es posible cual seria la forma de captar la mayor cantidad de excepciones ?
Muchas gracias

dec 22-06-2005 19:28:04

Hola,

Puedes estar atento al evento OnExcepcion de Application.

Podrías declarar un procedimiento de este modo:

Código Delphi [-]
  procedure ApplicationException(Sender: TObject; E: Exception);

Y, por ejemplo, en el evento FormCreate de tu aplicación asignar el procedimiento al evento correspondiente, algo así:

Código Delphi [-]
  procedure TForm1.FormCreate(Sender: TObject);
  begin
    Application.OnException := ApplicationException;
  end;

La implementación del procedimiento ApplicationException sería algo así:

Código Delphi [-]
  procedure TForm1.ApplicationException(Sender: TObject; E: Exception);
  begin
    ShowMessage('Excepción ' + E.Message);
  end;

Respecto de lo que dices de capturar la mayor cantidad de excepciones, no sé muy bien a qué te refieres, pero, ten en cuenta que las excepciones heredan de la clase Exception, o sea, sitúate en un código parecido a este:

Código Delphi [-]
 procedure TForm1.Button1Click(Sender: TObject);
 begin
   try
     Caption := IntToStr( 12 div 0 );
   except
     on E: Exception do ShowMessage(E.Message);
     on E: EDivByZero do ShowMessage(E.Message);
   end;
 end;

Aunque la excepción que corresponde aquí es EDivByZero, nunca se llegaría a mostrar "su mensaje", puesto que antes precisamos que se capturen excepciones del tipo Exception y este es el más alto en la jerarquía de excepciones, si está bien dicho así.

Lo suyo, pues, sería situar la línea de la excepción EDivByZero antes que la de la de Exception. Por otro lado, si tratas de probar el código anterior, verás que ni siquiera compilará: Delphi reconoce la división por cero y no deja continuar si esto no se arregla antes.

En el libro La cara oculta de Delphi 4 de Ian Marteens, el cual puede conseguirse gratuitamente desde su página Web, se tratan las excepciones y la manera de trabajar con estas.

En este propio Foro también se ha tratado en diferentes ocasiones el tema de las excepciones y el modo de trabajar con ellas: solamente echa un vistazo con ayuda del buscador de los Foros.

RJF 23-06-2005 18:25:10

Perfecto Dec muchas gracias por la info y la dedicacion.

Si puedes una consulta mas, lo que estoy tratando de hacer es lo siguiente, que cuando ocurra una excepcion el programa capture la pantalla y me guarde la imagen, cosa que ya he logrado, ahora la pregunta es al capturar una excepcion el sistema creo que no llegara a largarme el cartel de error por lo tanto no me servira de mucho la captura, esto es asi ? de ser asi hay forma de que primero largue el cartel de error ?

muchas gracias

jachguate 23-06-2005 18:41:01

¿en serio, no te sirve mas la pantalla sin el mensaje de error que con él, muy posiblemente ocultando los datos que lo produjeron?

:confused:


La franja horaria es GMT +2. Ahora son las 15:18:14.

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