[Exception] Comment remonter une exception dans une autre unité ?
J'ai voulu implémenter une gestion d'exception au cas ou mes fichiers seraient effacés.
Soit une première fiche TForm1 qui créée une instance de TForm2. Cette fiche TForm2 appelle dans son évènement FormCreate une procédure ChargerFichierIni suceptible de déclencher une exception. Je souhaite que cette exception soit gérée par la 1ère routine appelante TForm1.FormCreate mais ça ne marche pas.
L'exception que je déclenche fonctionne comme si je n'avais pas implémenter de gestion d'exception dans TForm1.FormCreate ce qui fait planter le reste du programme !
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
procedure TForm1.FormCreate(Sender: TObject);
begin
try
FFiche2 := TForm2.Create(Self);
try
{ ... procedures Suivantes ... }
finally
FFiche2.Free;
end;
except
on E: EInOutError do
ShowMessage(E.Message);
end;
end; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
{ Chargement du fichier .ini }
procedure TForm2.ChargerFichierIni;
var
Fini: TiniFile;
begin
FIni := TIniFile.Create(ChangeFileExt(Application.ExeName, '.ini'));
try
if FileExists(FIni.FileName) then
{ Procédures }
else
raise EInOutError.Create('Fichier introuvable !');
finally
FIni.Free;
end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
ChargerFichierIni;
end; |
Si j'appelle directement 'ChargerFichierIni' sans passer par TForm2.FormCreate, l'exception remonte bien dans l'appelant mais ce n'est pas le comportement que je veux.
J'ai aussi implémenter ma gestion d'exception dans TForm1.FormCreate ce qui fonctionne aussi, mais comment informer ma fiche appelante que le fichier n'est pas disponible ?
Comment faire remonter une exception dans TForm1 en passant par le constructeur ou les évènements de TForm2 ?