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 :

exeption et performance


Sujet :

C++

  1. #21
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par Mongaulois
    Donc au final, utiliser les exeption pour tout type d'erreur est un bonne methode?
    Non.
    http://www.parashift.com/c++-faq-lit...html#faq-17.12

    Le cas typique est une classe fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    File f;
    try
    {
        f.open( "toto.txt" );
        f.write( "Hello!" );
    }
    catch ( const FileNotFoundException & e )
    {
        throw IOError();
    }
    catch ( const FileAccessError & e )
    {
        throw IOError();
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    File f;
    if ( f.open( "toto.txt" ) )
    {
        return f.write( "Hello!" );
    }
    return false;
    Si l'erreur est a destination de l'appelant de ta fonction, un simple code de retour simplifie l'utilisation. Maintenant, note que dans le 2eme cas File peut lever bad_alloc par exemple, mais comme l'appelant ne peut pas y faire grand chose, il laisse filer vers les plus hautes spheres...

  2. #22
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    ok, merci.
    Ca comme a devenir plus claire pour moi.

  3. #23
    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
    Par défaut
    Oui enfin dans certains cas la non existence du fichier est un cas exceptionnel

  4. #24
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Oui, mais ce n'est pas a la classe fichier de le décider, mais a son utilisateur. Le role d'une classe fichier est de permettre de manipuler un fichier, pas de décider s'il doit exister ou pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ( !f.open( "mustexists.txt" ) )
    {
        throw FileIsMissingException();
    }
    sauf si tu codes une classe FileWhichMustExists...

  5. #25
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    D'accord avec Aurelien, sauf que je serais plus du genre à y aller fonction par fonction, généralement avec un paramètre...
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    	void open(const std::string &fileName, bool bThrow);
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #26
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Dans ce cas je ne vois pas bien l'intérêt du try/catch :
    Code Aurelien.Regat-Barrel : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    File f;
    try
    {
        f.open( "toto.txt" );
        f.write( "Hello!" );
    }
    catch ( const FileNotFoundException & e )
    {
        throw IOError();
    }
    catch ( const FileAccessError & e )
    {
        throw IOError();
    }

    J'imagine que IOError est une classe mere de FileNotFoundException et FileAccessError, et donc qu'on peut simplifier le code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File f;
    f.open( "toto.txt" );
    f.write( "Hello!" );
    Et donc laisser l'appellant gérer l'erreur (par un try/catch), ce qui me semble plus pratique que la solution :

    Code Aurelien.Regat-Barrel : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    File f;
    if ( f.open( "toto.txt" ) )
    {
        return f.write( "Hello!" );
    }
    return false;

    non ?

  7. #27
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Surtout que le throw IOError() provoque la perte d'informations des exceptions précédentes...

    Un avantage des plate-formes comme .Net et Java, où l'on peut chaîner les exceptions sans problème...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  8. #28
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Rien n'empêche les exceptions C++ d'avoir aussi une notion de chaînage d'exceptions. Ca n'a rien de compliqué à mettre en place. C'est juste que les classes standard ne l'ont pas.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  9. #29
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    [Mode Un Peu Hors Sujet]
    En parlant de Java, je me pose la question suivante : pourquoi en Java il y a autant d'outils disponibles en standard (y compris IHM avec Swing), alors que le C++ est à la traîne (même avec l'ajout récent du TR1) ?
    [/Mode Un Peu Hors Sujet]

  10. #30
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par poukill Voir le message
    [Mode Un Peu Hors Sujet]
    En parlant de Java, je me pose la question suivante : pourquoi en Java il y a autant d'outils disponibles en standard (y compris IHM avec Swing), alors que le C++ est à la traîne (même avec l'ajout récent du TR1) ?
    [/Mode Un Peu Hors Sujet]
    Sûrement pour des raison de marketing. Vendre un nouveau language sans aucun outils, c'est pas trés attirant...

  11. #31
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par poukill Voir le message
    [Mode Un Peu Hors Sujet]
    En parlant de Java, je me pose la question suivante : pourquoi en Java il y a autant d'outils disponibles en standard (y compris IHM avec Swing), alors que le C++ est à la traîne (même avec l'ajout récent du TR1) ?
    [/Mode Un Peu Hors Sujet]
    Ca a ete discutte en long, en large et en profondeur, jusqu'a plus soif et ad nauseam ici. Donnons quand meme quelques pistes:
    1/ Les processus d'evolution sont tres differents
    2/ Les contextes dans lesquels ces processus prennent place sont differents
    3/ Pour donner un point plus specifique: il y a trop d'interets deja investis dans des solutions non standards divergentes.

  12. #32
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK j'ai commencé à lire le thread, mais je pense pas avoir fini avant la semaine prochaine... Merci en tout cas pour le lien ...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [maintenance][performance] Que faire comme maintenance ?
    Par woodwai dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 06/11/2003, 15h39
  2. Performance xml
    Par MicKCanE dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/07/2003, 06h41
  3. [ POSTGRESQL ] Problème de performance
    Par Djouls64 dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 26/05/2003, 16h18
  4. [JDBC][connexion persistante] performances avec JDBC
    Par nawac dans le forum Connexion aux bases de données
    Réponses: 6
    Dernier message: 06/05/2003, 10h37
  5. performance entre 3DS, ase, asc ...
    Par amaury pouly dans le forum OpenGL
    Réponses: 3
    Dernier message: 24/03/2003, 11h41

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