Salve a tutti, ho un problema con la gestione delle eccezioni durante il tentativo di cancellare un record da una tabella.
Premetto che sono un neofita di Delphi, ho cominciato a lavorarci da 15 giorni circa!!!
Sto cercando di fare il porting di un’applicazione, sviluppata qualche anno fa con il Developer 6i della Oracle, in Delphi 2010. Il database è l’Oracle 10g express edition, e visto che non ho mai avuto problemi ho deciso di continuare ad usarlo anche con Delphi. Per la connessione al database sto usando ORACLE DATA ACCESS COMPONENT della Devart.
Scendo più in dettaglio nel problema.
Ho una tabella CLIENTI e una tabella FATTURE (master), tra le quali c’è, ovviamente, un vincolo di integrità referenziale sulla colonna CODICE CLIENTE.
Quando tento di cancellare dalla tabella CLIENTI un cliente che è presente nella tabella fatture ricevo, come è giusto che sia, il seguente messaggio di errore:
GestoDProj.exe raised exception class EOraError with message ‘ORA-02292: restrizione di integrità violata, chiave figlia trovata.Sto cercando di gestire l’eccezione nel seguente modo:
procedure TFClienti.my_Del;
begin
if messagedlg('Cancellare il record ?', mtWarning, [mbOk, mbNo],0, mbNo) = mrOk then
try
begin
DM_Gesto.OT_Clienti.Delete;
end
except
on EOraError do
begin
Dialogs.MessageDlg('Attenzione!!! Cliente non cancellabile!!!', mtError, [mbOk], 0, mbOk);
end
else
begin
Dialogs.MessageDlg('Attenzione!!! Record non cancellabile!!!', mtError, [mbOk], 0, mbOk);
end
end;
end;
Però l’eccezione non viene intercetta e mi viene riproposto il messaggio di errore esposto in precedenza.
Dove sto sbagliando ?

Grazie
Ciao