Ver Mensaje Individual
  #7  
Antiguo 29-07-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Jac.

El problema del uso que haces de try except; es que puede enmascarar errores y eso conlleva a dolores de cabeza.
Voy a usar un ejemplo infantil, pero va a servir para el caso.

Suponé que tenemos Form2 creado desde Form1 así:
Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
  try
   Application.CreateForm(TForm2,Form2);
   Form2.ShowModal;
  except
   Form2.Free;
  end;
end;
Y en el evento OnCreate del Form2:
Código:
procedure TForm2.FormCreate(Sender: TObject);
begin
  LineaQueCausaUnaExcepción; 
end;
La excepción es detectada por except en Form1, la memoria ocupada por Form2 es liberada, el form no se muestra,
seguimos en Form1, pero... ¿ que pasó? ¿ por que no se muestra Form2 ?

Hemos metido la pata hasta el cuadríl y nadie nos dice por qué.

Sucede que capturamos la excepcion antes del ciclo de mensajes.
Ya existe un try/except en el ciclo de mensajes, y se muestra con Application.ShowException, abortando el mensaje.

Esto no pasa con el uso de finally; elevándonos la excepcion y avisándonos lo que pasa.

Este ejemplo es muy trivial, pero lo cierto es que detectar un error en una aplicación grande, suele ser complicado,
aún con los mensajes de excepción.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 29-07-2010 a las 07:42:15.
Responder Con Cita