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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?
Partager