Utilisant très rarement les exceptions personnalisées et la propagation de celle-ci d'une procédure à une autre., j'aimerai savoir si je ne fais pas fausse route sur la propagation de ces dernières.
Voici l'exception personnalisée (rien de bien compliquer ^^)
Voici la fonction principale sur laquel je voudrais réceptionner l'exception
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Type EAuthNotFound = class(Exception)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure MaProcedurePrincipale; begin Try MaProcedureSecondaire Except On E:EAuthNotFound do begin Showmessage('l''erreur est : ' + E.Message); end; On E:Exception do raise; 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 procedure MaProcedureSecondaire; begin try if Mafunction then Showmessage('Fini'); Except On E:EAuthNotFound do begin // Est on obligé de faire comme ca pour que cette exception se propage ? raise EAuthNotFound.Create(E.Message); end; On E:Exception do raise; end; end;J'ai essayé en utilisant un simple Raise, mais l'exception en elle même n'est pas transmise (EAuthNotFound) et passe par le gestionnaire d'exception commun (E:Exception).
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 function Mafunction : Booelan; begin try //récupération d'informations d'un fichier Xml Case StrToIntDef((Noeud.Text),-1) of -1: Raise EAuthNotFound.Create('No Auth Found'); // erreur 0: Result := True; else Result := False; end; end; Except on E:EAuthNotFound do // Est on obligé de faire comme ca pour que cette exception se propage ? raise EAuthNotFound.Create(E.Message); on E:Exception do Raise Exception.Create('Error MaFunction : ' + E.Message); end; end;
Est ce correcte ou existe-t-il une autre solution ?
Merci ^^
Partager