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

MFC Discussion :

[MFC] Dérivation fonction Run CWinApp


Sujet :

MFC

  1. #1
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Par défaut [MFC] Dérivation fonction Run CWinApp
    Bonjour,

    je suis en train d'implanter une petite gestion d'erreur dans mon appli MFC. Le but est de sortir une copie de la callstack.

    Pour ca je fais donc Try/catch/trow sur toutes les fonctions. Le problème c'est que je ne veux pas que l'application se ferme. Je veux afficher à l'utilisaterur un message d'erreur, mais je veux qu'il garde la main sur l'appli pour qu'il quitte "proprement".

    J'ai donc dérivée la fonction Run de ma WinApp pour arreter le log d'erreur et afficher le message. Je recupére bien ma callstack mais l'appli se quite forcement ou alors je n'ai plus la main. Qui y a t'il de particulier à faire.

    voila mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    int CTestOpenDesignApp::Run() 
    {
    	try
    	{	
    		return CWinApp::Run();
    	}
    	catch( ... )
    	{
    		AfxMessageBox( "Fin" );
    	}
    }
    Merci d'avance pour vos réponses.

  2. #2
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Par défaut
    Personne

    Je rappelle mon but: je voudrai récupérer l'exception mais ne pas quitter l'appli. Au début j'avais pensé compter le nombre d'exception qui sont passées et en fonction ne faire pas de trow mais c'est pourris .

    En fait je penser en dérivant la fonction Run de me rapprocher de la fonction
    OnException que l'on retrouve sur une TApplication en C++ builder.

    j'espere vous avoir donné plus d'information pour que vous puissez m'aider

  3. #3
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    je ne vois pas trop ce que tu veux faire, mais la gestion des exceptions en win32, ca se passe du coté de ces fonctions SetUnhandledExceptionFilter, UnhandledExceptionFilter, GetExceptionCode, GetExceptionInformation, AbnormalTermination, etc ...

  4. #4
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Par défaut
    Alors ce que je veux faire c'est :

    - dans tout les fonctions de mon application je fais un Try / Catch / Throw
    - dans le catch je logge la fonction et la ligne qui fait fait planter dans un fichier texte
    - du coup c'est comme si j'avais la pile d'appel dans un fichier

    voila le principe.

    2 ième chose je ne veux pas que l'utilisateur soit sortis de l'application. Genre handle execption et bam l'appli se ferme. je voudrais lui laisser la main pour qu'il quitte l'application proprement ou bien qu'il puisse enregistrer son document.

    3ième chose, le fichier est la pour que j'ai un trace du cheminement qui a ammene au probleme / bug.

    Ai-je étais plus clair ?

  5. #5
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Par défaut
    je ne maitrise pas le sujet, mais les fonctions que j'ai cité peuvent orienter tes recherches.

    Regarde aussi du coté des blocs except
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    _ _try {
       // Guarded body
     
     
     
    }
    _ _except (exception filter) {
       // Exception handler
     
     
     
    }
    à utiliser de cette manière par exemple
    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
    _ _try {
       y = 0;
       x = 4 / y;
    }
     
    _ _except (CoffeeFilter(GetExceptionCode())) {
     
       // Handle the exception.
     
     
     
    }
     
    LONG CoffeeFilter (DWORD dwExceptionCode) {
       return((dwExceptionCode == EXCEPTION_ACCESS_VIOLATION) ?
          EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH);
    }

  6. #6
    Membre averti
    Inscrit en
    Mai 2004
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 35
    Par défaut
    ok merci beaucoup je vais regarder de ce cote-ci

Discussions similaires

  1. Dérivation fonction quelconque vb
    Par bdsss dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/06/2008, 15h00
  2. [MFC/Excel] Fonction Find de la classe CRange
    Par SmOkEiSBaD dans le forum MFC
    Réponses: 1
    Dernier message: 02/06/2008, 10h03
  3. une fonction run
    Par meftahie dans le forum C
    Réponses: 0
    Dernier message: 04/12/2007, 00h37
  4. MFC appel fonctions
    Par beb30 dans le forum MFC
    Réponses: 7
    Dernier message: 13/04/2006, 15h39
  5. [MFC] Appel Fonction OnEraseBkgnd
    Par bletz dans le forum MFC
    Réponses: 4
    Dernier message: 13/10/2005, 14h03

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