IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

gestionnaire d'Exception dans DLL


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut gestionnaire d'Exception dans DLL
    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)
    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;
    le test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ExceptObject is Exception
    renvoie faux, alors que si, grace au debogueur, j'evalue ExceptObject.classname je trouve 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 ?
    _pirBD_

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut
    vraiment aucune idee ?

    Meme pas un petit encouragement ?


    Si je détaille un peu plus mon probleme peut-etre...

    En fait la fonction contenue dans la dll sert a afficher une fenetre modale, qui doit se fermer sur certaines exceptions et sur d'autres non...
    Dans mon gestionnaire d'exception, affecté à la création de ma fenetre, j'utilisais, suivant le type de l'exception, un ModalResult.

    J'ai essayé de trouver un endroit pour mettre un bloc try ...except pour contourner le probleme du premier post, mais si je le met dans le corps de la fonction de ma dll, ma fenetre est fermée à chaque exception.
    Peut etre y a t-il un autre endroit ou je peux mettre ce bloc :

    Si ca peut aider dans la compréhension du problème, lorsque je met le try .. except dans la fonction principale, la fonction TApplication.HandleException n'est plus appelée...


    Please Help me
    _pirBD_

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 59
    Points : 45
    Points
    45
    Par défaut
    Bon c'est pas tout a fait resolu mais j'ai bien avancé, en fait l'affectation au Application.OnException que j'affecte dans le create de l'ihm modale de ma dll n'est appelé correctement qu'apres (plutot pendant ) l'appel a showmodal

    Les exceptions que je n'arrivais pas a choper etait declenchées dans des fonction d'initialisation que j'appelais entre la creation et le showmodal (et la j'ai toujours pas compris pourquoi ca marchait pas)
    Ma solution est donc de faire mes initialisations dans le onShow de l'ihm ...

    Merci, pour... comme ca
    _pirBD_

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. 'System.Exception' dans Microsoft.SPOT.Hardware.dll
    Par gildas2526 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 09/10/2011, 01h31
  2. Exception dans kernel32.dll qui freeze mon programme
    Par Chekov dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 30/03/2009, 13h59
  3. Réponses: 6
    Dernier message: 04/02/2007, 16h33
  4. [VC6 et MFC] Exception dans MFC42D.dll
    Par Philippe320 dans le forum MFC
    Réponses: 8
    Dernier message: 09/12/2005, 14h14
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo