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][Exception] portée d'une exception


Sujet :

MFC

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut [MFC][Exception] portée d'une exception
    Bonjour à tous,

    - J'ai une classe A1, avec une méthode readFile()
    - J'ai une classe A2, avec une variable de type A1
    - J'ai une méthode M1() de A2 qui apelle A1::readFile()

    est-ce que l'exception de type CFileException générée par CFile::Open() dans ma méthode readFile peut être récupérée dans M2()?

    La même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    class A1{
    int readFile(CString strFileName);
    ...
    }
    int A1:readFile(CString strFileName)
    {
       CFile file;
       if (file.Open(m_strReceptionFileName, CFile::modeReadWrite)==0)
       {
            return 1;
       }
    ...
    }
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void A2::M1()
    {
       A1 a1;
       // **1** //
       a1.readFile(m_strFileName);
       // **2** //
    }
    Ai-je le droit de mettre, à la place de // **1** //:et à la place de // **2** //
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     }
    catch(CFileException *e)
    {
       ... // je récupère et je traite l'exception
    }
    :

  2. #2
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    est-ce que l'exception de type CFileException générée par CFile::Open() dans ma méthode readFile peut être récupérée dans M2()?
    Pour récupérer les exceptions MFC, il faut utiliser... le système d'exceptions MFC. C'est-à-dire pas le try..catch du C++ mais les macros :

    TRY
    CATCH, END_CATCH, CATCH_ALL
    THROW, THROW_LAST

    Et la réponse est oui, il suffit d'encadrer l'appel de la méthode dans un bloc TRY..CATCH.
    Ou si tu souhaites exécuter un traitement spécifique sur exception dans ReadFile(), renvoyer au parent l'exception piégée dans son bloc TRY..CATCH à l'aide de THROW...
    La routine quoi.

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    ok nickel.
    Merci.

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    ARrghhhhhhhhhh.... je n'arrive pas à compiler un TRY/CATCH!!!
    J'ai fait ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TRY
    			{
    				iErr=m_gsGrid.loadSession(strErrMsg);
    			}
    			CATCH(CFileException, *pEx)
    			{
    				pEx->ReportError();
    			}
    et il m'envoie l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error C2227: la partie gauche de '->IsKindOf' doit pointer vers un class/struct/union
    Le message d'erreur pointe sur la ligne du CATCH.
    Je ne comprends pas, je n'utilise pas de IsKindOf pourtant!!

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    essaie plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CATCH( CFileException, e )

  6. #6
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197
    Par défaut
    Et il manque le END_CATCH

  7. #7
    Membre habitué Avatar de BertrandA
    Inscrit en
    Août 2003
    Messages
    170
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 170
    Points : 197
    Points
    197

  8. #8
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    ok nickel c'est bon ça marche pil poil impec!!!
    Merci!!!

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

Discussions similaires

  1. gerer une exception, rendant invisible une donné
    Par unformatdj dans le forum VB.NET
    Réponses: 3
    Dernier message: 09/09/2010, 14h43
  2. Réponses: 1
    Dernier message: 18/12/2009, 20h01
  3. Réponses: 5
    Dernier message: 20/11/2007, 16h04
  4. Réponses: 4
    Dernier message: 24/01/2007, 19h45
  5. Réponses: 2
    Dernier message: 28/08/2003, 00h00

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