Código Delphi
[-]
...
except on E: Exception do begin
Showmessage(E.ClassName+' - '+E.Message+' - '+E.ErrNum);
raise Exception.CreateFmt(QY_150, [WaybillNo]);
end; end;
Es poco recomendable que utilizes E:Exception ya que pase lo que pase, capturaras el error y podría ser un error que no deseas. En este caso lo estamos utilizando para obtener el ClassName y el ErrNum. Pero una vez que tengas estos dos datos, lo mejor es que utilizes los mismos para capturar el error que deseas. es decir:
Código Delphi
[-]
try
ExecSQL; except on E:EDBEngineError do begin
If E.Errors[0].ErrorCode = 9729 then begin
showmessage('llave duplicada');
end else begin
Raise;
end; end;