[Exception] Propagation des exceptions
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 ^^)
Code:
1 2
|
Type EAuthNotFound = class(Exception) |
Voici la fonction principale sur laquel je voudrais réceptionner l'exception
Code:
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:
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; |
Code:
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; |
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).
Est ce correcte ou existe-t-il une autre solution ?
Merci ^^