C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

stringstream et exception.

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Goth
Guest





PostPosted: Thu Jul 24, 2003 7:18 pm    Post subject: stringstream et exception. Reply with quote



J'ai le code suivant :

void IoXML::openFile(const std::string &name)
{
xmlNodePtr model;

if((m_doc = xmlParseFile(name.c_str())) == NULL) {
std::stringstream s;
s << "Error on parse file " << name.c_str() << std::endl;
throw s.str();
}
...
}


J'aimerais savoir si je ne crée pas une fuite de mémoire avec la
stringstream ?

Est ce qu'il faudrait mieux faire un :

...
throw std::string(s.str());
...

Sinon si vous avez une meilleure idée pour gérer les erreurs (if faut
gérer les erreurs dans les boîtes de dialogue et ou la console) je suis tout
ouï !

Merci d'avance.
Back to top
Bertrand Motuelle
Guest





PostPosted: Thu Jul 24, 2003 8:18 pm    Post subject: Re: stringstream et exception. Reply with quote



"Goth" <oogothoo (AT) yahoo (DOT) fr> schrieb im Newsbeitrag
news:pan.2003.07.24.19.18.29.828882 (AT) yahoo (DOT) fr...
Quote:
J'ai le code suivant :

[...]
std::stringstream s;
s << "Error on parse file " << name.c_str() << std::endl;
throw s.str();
[...]


Quote:
J'aimerais savoir si je ne crée pas une fuite de mémoire avec la
stringstream ?

Non, c'est correct. Pour cet usage std::ostringstream est suffisant.

Quote:
Est ce qu'il faudrait mieux faire un :
throw std::string(s.str());

C'est redondant. La fonction str() de stringstream retourne un std::string
(contrairement à strstream).

Quote:
Sinon si vous avez une meilleure idée pour gérer les erreurs (if faut
gérer les erreurs dans les boîtes de dialogue et ou la console) je suis
tout
ouï !

Il y a un tas de moyens de gérer les erreurs.
Concernant les exceptions, tu devrais peut-être créer ta propre d'exception
plutôt que de lancer des std::string.
(c'est un peu particulier de faire un catch(std::string&)).
Il est assez courant de dériver une classe/hiérachie de classe de
std::exception qui encaspulera le contexte de l'exception (origine,
sévéritée, message, pile d'appel...).
A toi de determiner ce dont tu as besoin exactement.

Bertrand



Back to top
Goth
Guest





PostPosted: Thu Jul 24, 2003 9:39 pm    Post subject: Re: stringstream et exception. Reply with quote



Le Thu, 24 Jul 2003 22:18:47 +0200, Bertrand Motuelle a écrit :

Quote:
"Goth" <oogothoo (AT) yahoo (DOT) fr> schrieb im Newsbeitrag
news:pan.2003.07.24.19.18.29.828882 (AT) yahoo (DOT) fr...
[texte rapporté caché]
[...]
[texte rapporté caché]
[...]

[texte rapporté caché]

Non, c'est correct. Pour cet usage std::ostringstream est suffisant.

[texte rapporté caché]

C'est redondant. La fonction str() de stringstream retourne un std::string
(contrairement à strstream).

[texte rapporté caché]
tout
[texte rapporté caché]

Il y a un tas de moyens de gérer les erreurs.
Concernant les exceptions, tu devrais peut-être créer ta propre d'exception
plutôt que de lancer des std::string.
(c'est un peu particulier de faire un catch(std::string&)).
Il est assez courant de dériver une classe/hiérachie de classe de
std::exception qui encaspulera le contexte de l'exception (origine,
sévéritée, message, pile d'appel...).
A toi de determiner ce dont tu as besoin exactement.

Bertrand


C'est ce que j'étais en train de penser en fait...
J'écris une classe pour voir et on en reparle après :)

Merci.

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.