Hola manuFP y bienvenido a los foros del Club Delphi.
Tenés que utilizar el objeto EDBEngineError para poder extraer el código de error y actuar en consecuencia.
Un ejemplo:
Código Delphi
[-]
Query1.SQL.Text:= 'SELECT a* FROM COUNTRY';
try
Query1.Open;
except
on E: Exception do
if E is EDBEngineError then begin
case EDBEngineError(E).Errors[0].ErrorCode of
$2A12:begin ShowMessage('Error en sentencia SQL'); ...
end;
else ShowMessage(EDBEngineError(E).Errors[0].Message);
end;
end
else ShowMessage(E.Message);
end;
El tema es extenso para tratarlo en un mensaje con un simple ejemplo y los problemas que acarrea no capturar un error son serios. Te recomiendo
que amplies buscando sobre el tratamiento de errorres, objeto EDBEngineError, BDE Error codes, etc.
Y si quisieras ir un paso más allá y personalizar tus excepciones, Delphi te permite redefinir el manejador de las mismas mediante el evento
Application.OnException.
Sin ir más lejos en el FTP del Club tenés
La Cara Oculta de Delphi 4 que dedica un capítulo a tratar el tema excepciones.
Saludos.