Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 22-06-2005
RJF RJF is offline
Miembro
 
Registrado: abr 2005
Posts: 24
Poder: 0
RJF Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 22-06-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
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.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 22-06-2005 a las 19:46:43. Razón: (ampliación del texto)
Responder Con Cita
  #3  
Antiguo 23-06-2005
RJF RJF is offline
Miembro
 
Registrado: abr 2005
Posts: 24
Poder: 0
RJF Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 23-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
¿en serio, no te sirve mas la pantalla sin el mensaje de error que con él, muy posiblemente ocultando los datos que lo produjeron?

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 15:32:28.


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
Copyright 1996-2007 Club Delphi