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 :

Exceptions : comment faire une exception qui continue la fonction appellante?


Sujet :

C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Points : 90
    Points
    90
    Par défaut Exceptions : comment faire une exception qui continue la fonction appellante?
    Bonjour à tous,

    Mais voilà, je rencontre un autre problème : une fenêtre de mon interface graphique (powered by GTK+) contient un champ heure. Cette heure est gardée en mémoire par l'application sous forme de int. Ce int est private est pour le modifier on doit appeler une fonction heure (void h(int new_h)).
    Si l'heure est comprise entre 0 et 23 inclus pas de problème mais si jamais l'utilisateur rentre 48 dans le champ ma fonction lance une exception de type EX_ERRONEOUS_DATA qui est interceptée par le catch dans le main principal (bien au dessus de h() dans le processus de remontée des exceptions).

    L'exception affiche une boite de message à la GTK comme quoi la valeur du champ doit être comprise entre 0 et 23 inclus.
    Mais voilà, la je voudrais tout simplement quitter la fonction qui a lancé l'exception. J'ai donc mis un return juste après mon throw EX_ERRONEOUS_DATA();.
    Et je voudrais reprendre à partir de ce point là dans l'application, si toutefois c'est possible.

    Comment faire?

    Merci d'avance!

    Sp@rtan03.
    Pourquoi faire simple quand on peut faire compliqué!

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Impossible, si une exception est levée, la pile est déroulée jusqu'à ce que le programme trouve un try/catch qui peut gérer l'exception, et à ce moment, on ne peut plus retourner en arrière.

  3. #3
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ça peut se faire avec des coroutines, mais pas avec des exceptions.
    Boost ftw

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Points : 90
    Points
    90
    Par défaut
    Ok, j'avoue que je m'y attendais un peu!
    Mais je viens d'avoir une idée!
    Il me suffit de faire un try dans la fonction h() puis un catch(EX_ERRONEOUS_DATA&) qui affiche le message associé à l'exception avant de terminer celle-ci. Pour les routines je vais éviter.

    Merci quand même!
    Pourquoi faire simple quand on peut faire compliqué!

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Pour les routines je vais éviter.
    !!???
    Boost ftw

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/04/2007, 13h39
  2. Réponses: 2
    Dernier message: 06/04/2007, 13h31
  3. Réponses: 2
    Dernier message: 16/10/2006, 09h22
  4. Comment faire une PS qui renvoi l'annee en cours
    Par hugobob dans le forum Requêtes
    Réponses: 3
    Dernier message: 27/07/2006, 14h08
  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