Bonjour,
Lorsqu'une exception est soulevée dans l'événement FormCreate d'un objet de type TForm, l'erreur est affichée à l'écran mais ne semble pas interrompre le déroulement du code. Voici un exemple.
J'ai une fiche bidon dans laquelle je soulève une exception dans le FormCreate:
Dans une autre fiche, sur le clic d'un bouton, je créé une instance de TForm3 :
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
22
23
24
25
26
27
28
29
30
31 unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm3 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} procedure TForm3.FormCreate(Sender: TObject); begin raise Exception.Create('Voici une erreur'); Showmessage('Ce message n''est jamais affiché'); end; end.
Lorsque je clique sur Button1, l'erreur est affichée et quand je fais OK, le showmessage est exécuté.
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
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, AppEvnts, Buttons; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; Ttesss = class constructor Create; end; var Form1: TForm1; implementation uses Unit2, Unit3; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var F: TForm3; begin F := TForm3.Create(self); showmessage('Ce message est affiché'); //Pourquoi est-ce que ça exécute ce code?? end; end.
Ma question est fort simple : pourquoi est-ce que le code de Button1Click continue d'être exécuté après qu'une exception a été soulevée ?
Merci!
Partager