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 17-06-2004
kueik kueik is offline
Registrado
 
Registrado: jun 2004
Posts: 3
Poder: 0
kueik Va por buen camino
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!
Responder Con Cita
  #2  
Antiguo 17-06-2004
kueik kueik is offline
Registrado
 
Registrado: jun 2004
Posts: 3
Poder: 0
kueik Va por buen camino
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;
Responder Con Cita
  #3  
Antiguo 17-06-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
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...
__________________
E pur si muove
Responder Con Cita
  #4  
Antiguo 17-06-2004
kueik kueik is offline
Registrado
 
Registrado: jun 2004
Posts: 3
Poder: 0
kueik Va por buen camino
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;
Responder Con Cita
  #5  
Antiguo 18-06-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 22
marto Va por buen camino
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]
__________________
E pur si muove
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 09:52:06.


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