Bonjour,
J'ai un probleme en voulant utiliser un gestionnaire d'exception personnalisé dans une dll :
Dans ma DLL, j'affecte Application.OnException à mon gestionnaire.
Alors que cette méthode marche trés bien dans une application, dans la dll mon gestionnaire n'est jamais appelé !
En tracant grace au debogueur, j'ai pu remonter (d'apres moi) à la source du probleme :
Dans la fonction TApplication.HandleException (unité Forms ligne 6992)
le test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure TApplication.HandleException(Sender: TObject); begin if GetCapture <> 0 then SendMessage(GetCapture, WM_CANCELMODE, 0, 0); if ExceptObject is Exception then begin if not (ExceptObject is EAbort) then if Assigned(FOnException) then FOnException(Sender, Exception(ExceptObject)) else ShowException(Exception(ExceptObject)); end else SysUtils.ShowException(ExceptObject, ExceptAddr); end;
renvoie faux, alors que si, grace au debogueur, j'evalue ExceptObject.classname je trouve Exception !
Code : Sélectionner tout - Visualiser dans une fenêtre à part ExceptObject is Exception
Pour aller plus loin, et pour vérifier que mon exception gérée ici était bien celle déclenchée, j'ai fait les évaluations suivantes :
- Exception(ExceptObject).message --> erreur de l'evaluateur
- Exception(PRaiseFrame(RaiseListPtr)^.ExceptObject).message --> mon message d'erreur
(PRaiseFrame(RaiseListPtr)^.ExceptObject étant la valeur renvoyée par la fonction ExceptObject)
Une idée pour résoudre mon probléme ?
Partager