Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema con las Excepciones y OO (https://www.clubdelphi.com/foros/showthread.php?t=11563)

kueik 17-06-2004 13:49:43

Problema con las Excepciones y OO
 
Estoy haciendo una aplicacion en 3 capas con Delphi. Por cada clase que me estoy creando en Delphi me creo tamien una clase Excepción para ella, PARA QUE OS ACLAREIS:

Unit DaoConnection:

Type EDaoConnection = Class ( Exception );
Type TDaoConnection = Class
.... atributos, metodos, properties...
end;

Unit GINRole

Type EGINRole = Class ( Exception );
type TGINRole = class
.... atributos, metodos, properties...
end;

Bien pues lo que me esta pasando es lo siguiente: kuando DaoConnection genera una excepción del tipo EDaoConnection ( EDaoConnection.Create(message) ), la Clase GINRole tiene esto:
try
.....
Except
on E: EDaoConnection do
raise EGINRole.Create('TGINRole: Error '+ E.Message);
end;

//Cuando se lanza una excepción DaoConnection, GINRole la controla i lanza una nueva suya (EGINRole) con el mensaje de la otra. PERO ES QUE ME PETA! da un error de memoria! por que? Alguien me puede ayudar?
HELP ME!

kueik 17-06-2004 13:53:04

Es decir añado! ME DA UN ERROR DE MEMORIA PORQUE EN E NO HAY NADA!

Except
on E: EDaoConnection do
raise EGINRole.Create('TGINRole: Error '+ Exception(E).Message);
//En E.Message Peta porke? Pero en ejecución e? Peta en Ejecución!
end;

marto 17-06-2004 13:59:03

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

Type EDaoConnection = Class ( Exception );
Type EGINRole = Class ( Exception );

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private

  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
try
   raise EDaoConnection.Create('lalala');
Except
  on E: EDaoConnection do
    raise EGINRole.Create('TGINRole: Error '+ E.Message);
end;

end;

end.

A mi me funciona bien...

kueik 17-06-2004 14:24:18

respondo....
 
haver el control de la Excepción DaoConnection està dentro de la Classe GINRole.

Type EGINRole = Class ( Exception );
type
TGINRole = class
...
..
..
Procedure kaka();
begin
try
DaoConnection.InsertCliente(...); //Aqui se produce la excepción.
Except
on E: EDaoConnection do
raise EGINRole.Create('TGINRole: Error '+ E.Message);
end;

end;

end;

y en el Form:

try
Except
on E: EGINRole do
ShowMessage(E.Message);
end;

marto 18-06-2004 14:05:34

Solo se me ocurre una cosa, la excepción que genera InsertaCliente no es del tipo EDAoConnection, por lo tanto no se está capturando... ¿Puede ser?
Haz una prueba, en lugar de
Código Delphi [-]
Procedure kaka(); 
begin
  try
    DaoConnection.InsertCliente(...); //Aqui se produce la excepción.
  Except
    on E: EDaoConnection do
      raise EGINRole.Create('TGINRole: Error '+ E.Message);
   end;
end;
haz:
Código Delphi [-]
Procedure kaka(); 
begin
  try
    DaoConnection.InsertCliente(...); //Aqui se produce la excepción.
  Except
    on E: EDaoConnection do
      raise EGINRole.Create('TGINRole: Error '+ E.Message);
    on E: Exception do
      ShowMessage(E.ClassName);
   end;
end;

Ah! y por favor pon tu código entre tags [delphi] ;)


La franja horaria es GMT +2. Ahora son las 12:41:50.

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