Delphi - Excepciones de interbase en Delphi

 
Vista:

Excepciones de interbase en Delphi

Publicado por MarceloC (2 intervenciones) el 11/08/2001 18:00:54
Hola amigos:
Me estoy iniciando en el mundo de la programacion con Delphi5, y quisiera saber como hacer para que desde mi aplicacion delphi (con base de datos en interbase) muestre los mensajes de las excepciones realizadas en lnterbase, ya que al producirse la excepcion desde delphi, me muestra un horrible mensaje de error y se detiene la ejecucion de la misma, pero el mensaje realizado en Interbase nunca se visualiza. Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Excepciones de interbase en Delphi

Publicado por Ernesto D'Spirito (706 intervenciones) el 15/08/2001 04:47:25
Por las dudas, la forma de atrapar una excepción de Interbase en principio puede ser así:

try
IBQuery1.ExecSQL;
except
on e: EIBERROR do
ShowMessage(Format('%s (SQLCode = %d)',
[e.Message, e.SQLCode]));
end;

Una excepción de Interbase no capturada en teoría será atrapada por el manejador de excepciones predeterminado, al igual que cualquier excepción no capturada, y no se cortará la aplicación.

Yo he visto un problema de excepciones usando Cached Updates con tablas y consultas de la BDE (TTable y TQuery), pero tal vez el problema (y la solución) se aplique también a Interbase. Tienes que capturar el evento OnUpdateError de la tabla o consulta, y poner un comentario para que el evento quede asignado:

procedure TForm1.IBTable1UpdateError(DataSet: TDataSet; E: EDatabaseError;
UpdateKind: TUpdateKind; var UpdateAction: TIBUpdateAction);
begin
// Una línea de comentario para que el evento quede asignado ;)
end;

Lo que pasa es que si no se asigna el evento, internamente se "troca" una excepción por otra...

De todos modos, tampoco es algo como para que se te termine la aplicación. Lo que a tí te debe estar ocurriendo me parece entonces que es algo más grave. Ayudaría mucho que nos dijeras cuál es el texto del mensaje de error que te aparece, cómo es la ventana, y en qué circunstancia se produce el error (algo de código fuente no estaría de más, indicando la línea donde se produce el error). ¿Estás usando un objeto IBTransaction?

Ernesto
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar