Ver Mensaje Individual
  #18  
Antiguo 19-08-2008
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Reputación: 27
Delphius Va camino a la fama
Hola disculpen que me meta donde no me llamen, no se si se deba a que estoy un tanto dormido, pero no termino de comprender a lo que se desea llegar.

No conozco demasiado, pero tengo entendido que una máxima de la programación dice "un objeto o se crea o no crea, no puede ser creado a medias". Si ocurre un error durante la creación de un objeto tiene lugar el evento destructor para limpiar la memoria, por tanto quedará la variable quedará apuntando a nil.

Tengo entendido, por favor corrijanme o tirenme de la oreja si me equivoco, que el método create no provoca ninguna excepción por lo que incorporar la sentencia

Código Delphi [-]
ObjA := TObjA.Create;

dentro de un Try está demás. No puede esperarse capturar una excepción en Create, más bien se puede capturar cuando se desea hacer uso de algún método y/o acceder a una propiedad.

De modo que la excepción que obtendremos es ese famoso EAccessViolation. En síntesis, yo lo veo así:

Código Delphi [-]
objA := TObjA.Create;
try
    ObjtA...
    ...
except
    on E: EAccessViolation do
        ShowMessage('¡Hey, Obj no ha sido creado!);
end;

Repito nuevamente, no se si es eso lo que se trata de ver aqui. La verdad es que me sentí un tanto confundido cuando leía este hilo. Mas yo posteo aqui por curiosidad y por un tirón de orejas para ver si logro aprender el tema que se está debatiendo.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita