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 :

gestion d'erreur C++


Sujet :

C++

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 104
    Par défaut gestion d'erreur SDL C++
    Bonjour.

    Je cherche désespérément un moyen de gérer les exceptions liés à la SDL dans mon prog en C++.
    En gros il s'agit de transformer ce code en C en C++ (alors try/throw/catch) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        if (SDL_Init(SDL_INIT_VIDEO) == -1) 
        { 
            fprintf(stderr, "Erreur d'initialisation de la SDL"); 
            exit(EXIT_FAILURE); 
        }

    J'aimerais plutôt avoir quelque chose de la forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    try { 
        SDL_Init(SDL_INIT_VIDEO); 
        throw "quelquechose"; 
    } 
    catch("quelquechose")     //ou catch(...) 
    { 
        écriture dans un fichier. (stderr) 
    }


    Que faut il mettre dans "quelquechose" ?
    Je sais comment fonctionne try/throw/catch mais j'ai un peux de mal avec ce qu'on doit lancer...

    Et puis-je garder cette syntaxe pour avoir une trace de l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fprintf(stderr, "Erreur d'initialisation de la SDL");

    Ou y'a t'il une meilleure syntaxe adaptée au C++ ?

    Merci pour votre aide.

  2. #2
    Membre Expert

    Inscrit en
    Mai 2008
    Messages
    1 014
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 1 014
    Par défaut
    Bonjour,
    Je cherche désespérément un moyen de gérer les exceptions liés à la SDL dans mon prog en C++.
    Ce n'est pas possible. La SDL est écrite en C, donc ne génère pas d'exception vu que les exceptions n'existent pas en C.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 104
    Par défaut
    Merci pour ta réponse Arzar.

    Donc si je comprend bien, si une erreur se produit pour une raison ou une autre lorsque le compilateur appelle la fonction SDL_Init, je ne peux pas gérer cette erreur à l'aide de try/throw/catch; mais je suis obligé de rester avec ma structure conditionnelle.
    C'est ça ?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 117
    Billets dans le blog
    148
    Par défaut
    Bonjour,

    Comme il a été dit, la SDL ne lance pas d'exception.
    Par contre, pour faire ce que vous semblez vouloir faire, cela ressemblera plus à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    try
    { 
        if ( SDL_Init(SDL_INIT_VIDEO) == -1 )
        {
            throw "quelquechose"; 
        }
    } 
    catch("quelquechose")     //ou catch(...) 
    { 
        écriture dans un fichier. (stderr) 
    }
    Donc pour vérifié les erreurs en SDL, on vérifie leurs valeurs de retour.
    Si besoin est d'envoyé une exception, on l'envoie nous même dans notre beau code C++
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut, et bienvenue sur le forum.

    Comme il a déjà été dit, SDL est une bibliothèque C, et ne supporte donc pas nativement les exceptions C++.

    Par contre, tu peux parfaitement envisager, sur base de la valeur de retour, de lancer tes propres exceptions.

    Tu pourrait, par exemple, envisager de créer une hiérarchie d'exceptions proche de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class MyException : public std::runtime_error // les exceptions SDL seront
                                                  // des exécutions "runtime" :D
    {
    };
    // exception lancée en cas d'erreur d'initialisation
    class InitException : public MyException  
    {
    };
    // éventuellement d'autres exceptions intéressantes
    que tu pourrais utiliser sous une forme proche de
    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
    19
    20
    21
    try
    { 
        if ( SDL_Init(SDL_INIT_VIDEO) == -1 )
        {
            throw InitException(); 
        }
    } 
    catch(InitException & e)
    { 
       /*geston de l'erreur, log éventuel */
    }
    // les autres exceptions runtime
    catch(std::runtime_error & e)
    {
       /*geston de l'erreur, log éventuel */
    }
    // les exceptions auxquelles on n'a pas pensé
    catch (...)
    {
       /*geston de l'erreur, log éventuel */
    }
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2010
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Mai 2010
    Messages : 104
    Par défaut
    Merci énormément Koala01! ^^

    Non seulement, cette méthode convient parfaitement à la "mise en forme" de mon code que je recherchais, mais il me permet également de gérer toutes les autres erreurs de manière simple et claire sans tout recoder!
    Et ça donctionne bien
    Merci encore, pb résolu!

    PS: pour mon premier post, je suis ravi! ^^

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

Discussions similaires

  1. gestion d'erreur et de transactions....
    Par Dge dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/02/2006, 22h20
  2. [Struts-Validator] Gestion d'erreurs
    Par sylvain_neus dans le forum Struts 1
    Réponses: 14
    Dernier message: 09/04/2004, 15h15
  3. [XSLT]Est ce qu'il y'a la gestion des erreur en xslt ?
    Par miloud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/02/2004, 17h19
  4. [LG]tests pour la gestion d'erreur
    Par le 27 dans le forum Langage
    Réponses: 3
    Dernier message: 22/12/2003, 20h44
  5. [LG]gestion des erreurs
    Par frontin dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2003, 22h41

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