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

C++ Discussion :

Opérateur de portée: exceptions


Sujet :

C++

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 55
    Points : 66
    Points
    66
    Par défaut Opérateur de portée: exceptions
    Hello!

    Juste une petite question qui me "titille" un peu... Mon code marche, mais je ne comprends pas un petit truc que j'ai du ajouter...

    Voila, cela concerne les exceptions.
    J'ai une classe "times" contenant une exception:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class times
    {
      public:
        ....
        class except {};
        ...
    };
    dans mon main, j'inclus la déclaration de "times", et je "gère" les exceptions avec try-catch:

    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
    18
    #include "times.h"
    ...
    int main(...
    {
    ...
    
      try
      {
       ...
      }
      catch (times::except)
      {
      ...
      return -1;
      }
    return 1;
    }
    Ma question: pourquoi suis-je obligé de mettre l'opérateur de portée dans mon catch?
    Je n'ai pas déclaré ma classe d'exeption comme statique, et je n'ai pas créé de namespace spécifique... Je ne saisi pas bien le problème. J'avais mis (sans trouver cela bizarre) juste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    try
    {
     ...
    }
    catch (except)
    {
    mais évidemment ca compile pas.

    Merci pour le coup de main

    A++

    JC

  2. #2
    Membre éprouvé

    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2005
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2005
    Messages : 634
    Points : 1 205
    Points
    1 205
    Par défaut
    Citation Envoyé par jc_isd
    Je n'ai pas déclaré ma classe d'exeption comme statique
    Non mais là tu n'as pas déclaré une variable mais bien un type, donc c'est normal que tu ais besoin de l'opérateur :: pour y accéder et l'utiliser. C'est comme les itérateurs des conteneurs de la STL par exemple qui sont qui sont des types dans la classe du conteneur et qu'on peut utiliser de la même manière. Mais au fait pourquoi vouloir déclarer une classe d'exception à l'intérieur de ta class times ?

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2002
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 55
    Points : 66
    Points
    66
    Par défaut
    Merci pour la réponse... En effet, j'ai déclaré un type (via class) j'aurais du m'en rendre compte....


    Pourquoi l'avoir déclaré dans la classe times? Parceque c'est dans la définition de mes fonctions de la classe times (plus particulièrement la surcharge des operateurs) que je "jette" mes exceptions. Devrais-je écrire un fichier (.h) contenant la déclaration de toutes mes exceptions, et qui serait inclus par tous les fichiers .cpp? Je ne connais pas les regles de bonne conduite à ce niveau.

    Merci pour l'aide.
    A+
    JC

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Si ton exception est vraiment spécifique et ne peut être levée que par la classe times, alors ça n'est pas forcément une mauvaise idée de la mettre dans la définition de celle-ci.

    Sinon si tu veux les séparer, alors fais un couple .h / .cpp par exception (pas toutes dans le même fichier). En C++ on essaye toujours de n'inclure que ce dont on a réellement besoin ; sur des petits projets ça n'a pas forcément toujours d'importance, mais sur les gros ça peut être crucial.

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

Discussions similaires

  1. RMI Exception port 162
    Par hicham.gi dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 25/07/2007, 15h16
  2. Porté de variable dans un try except
    Par japey dans le forum Général Python
    Réponses: 4
    Dernier message: 23/05/2007, 12h55
  3. Réponses: 2
    Dernier message: 17/02/2007, 04h34
  4. l'opérateur de résolution de portée (::)
    Par malikoo dans le forum C++
    Réponses: 2
    Dernier message: 19/12/2005, 13h08
  5. [MFC][Exception] portée d'une exception
    Par r0d dans le forum MFC
    Réponses: 7
    Dernier message: 12/01/2005, 15h01

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