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

Langage C++ Discussion :

Mauvaise pratique ? throw new exception()


Sujet :

Langage C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 198
    Points : 106
    Points
    106
    Par défaut Mauvaise pratique ? throw new exception()
    Bonjour,

    Je vois dans beaucoup de code cette pratique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    throw new exception("Hum..hum");
    Mais cela ne provoquerait-il pas des memory leak ? Etant donné qu'une zone mémoire est réservé mais jamais plus utilisé ni pointé (du moins en C++).
    Je demande car le fait de le voir tellement souvent me fait douter, peut-être il y a t'il quelque chose à laquelle je ne pense pas.

  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
    Effectivement, je ne pense pas que ce soit super, d'autant qu'il faut récupérer l'exception par pointeur alors qu'un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw exception("Hum..hum");
    peut être récupérée par un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    catch(const exception& exc)
    sans qu'il y ait non plus d'allocation mémoire supplémentaire.

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

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Une exception lancée ainsi doit être catchée par pointeur et deletée dans le catch.

    J'ai tendance à dire qu'en C++, c'est une mauvaise pratique. La bibliothèque MFC possède une excuse, puisque sa première version date d'avant la standardisation du C++, voire même d'avant le support des exceptions C++ par Visual.
    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.

  4. #4
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    La bonne pratique c'est de virer le new.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    throw exception("Ca s'est mal passé");
    Car le new n'apporte rien de bien/plus, si ce n'est qu'on aura à attrapper un exception* et à le deleter derrière...

  5. #5
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    J'avais ouvert un post à ce sujet : Durée de vie d'une exception il y a quelques jours.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

Discussions similaires

  1. probleme : throw new Exception
    Par anto48_4 dans le forum Langage
    Réponses: 8
    Dernier message: 20/12/2010, 08h24
  2. throw new Exception ne marche pas
    Par Jean_pierre dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/10/2009, 10h08
  3. Throw new exception
    Par pepi22 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/05/2009, 23h53
  4. Réponses: 5
    Dernier message: 25/08/2008, 10h03
  5. Réponses: 7
    Dernier message: 15/02/2007, 23h58

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