Bonjour,
j'étais en train de lire un article sur l'utilisation de Raise et je me rends compte qu'il me manque des connaissances de base pour comprendre le propos.Je ne comprends pas "recherche dans la pile de fonction en cours une fonction qui contient un gestionnaire d'exception". Concrètement cela veut dire quoi quand j'écris :Dès qu'une exception est levée, le programme recherche dans la pile de fonction en cours une fonction qui contient un gestionnaire d'exception. Une exception levée est propagée dans les procedures et fonctions en remontant les différents appels jusqu'à ce qu'elle soit capturée dans un bloc except. A ce moment, la propagation de l'exception s'arrete. Le reste du code de chaque fonction est ignoré.
Une fois l'exception traitée, le programme se poursuit après le bloc de gestion d'exception et non après l'instruction qui a provoqué l'exception.
Si l'exception n'est pas capturée en remontant la hiérarchie des procédures, elle est traitée par la méthode HandeException de l'objet Application qui définit un comportement par défaut. Il est possible de rédéfinir cette méthode pour en modifier le comportement : par exemple ajouter un message dans un fichier log qui contiendra les exceptions levées.
Quelle est la pile de fonction en cours ? (fonctions)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 except on E: EFDDBEngineException do begin {$IFDEF DEBUG} Showmessage(E.Message + LineBreak + 'Failed SQL: ' + E.SQL); Raise; {$ENDIF} eErr:= eSQLerr; end; end;
Merci. Zac
Partager