goto or not to go - C++ - Programmation
Marsh Posté le 13-08-2008 à 11:00:12
Et par rapport a la question ?
Mes tests ne generent pas d'exception pour le moment, enfin je pourrais en generer dans certains cas explicitement mais bon
C m'empechera pas d'avoir 10 000 inclusions, vu que dans le cas ou je veux sortir je suis oblige de faire un goto quand
Marsh Posté le 13-08-2008 à 11:05:44
cppisevil a écrit : Et par rapport a la question ? |
bah fais des exceptions. Le goto en C je ne dis pas non, mais en C++ avec les objets, c'est ingérable.
Marsh Posté le 13-08-2008 à 11:29:04
cppisevil a écrit : Et par rapport a la question ? |
On est pile dans le sujet pourtant.
cppisevil a écrit : Mes tests ne generent pas d'exception pour le moment |
C'est le moment alors !
Petit exemple juste pour illustrer :
Code :
|
Marsh Posté le 13-08-2008 à 11:34:59
Ah non pitié de lance pas des string mais des vrais exceptions dérivant std::exception et en particulier de trucs genre std::runtime_error ou tout ce que contient <stdexcept> (google).
Marsh Posté le 13-08-2008 à 11:36:44
Et on ne lance pas std::exception en mettant le type d'exception en message, merci
Spoiler : Oui, il y en a qui m'enervent .... |
Marsh Posté le 13-08-2008 à 11:37:20
Yup j'ai eu un coup de flemme, c'était plus pour illustrer qu'utiliser goto dans son cas était inutile et pourri qu'autre chose.
edit : cppisevil, tu trouveras plus d'infos ici : http://www.cplusplus.com/doc/tutorial/exceptions.html
Marsh Posté le 13-08-2008 à 11:51:01
Le truc c'est qu'avec ça
en gros toute ma méthode et contenu dans un try catch
et ce qu'il y a dans le catch c'est ce que j'etais cense faire en allant au goto
c'est pas terrible de mettre une methode entiere dans un try catch
le but des goto
c'etait d'eviter d'avoir des if then else imbriquee pour la lisibilite du code
si je met un try catch a chaque test, ben ca m'avancera rien et n'aura pas plus dutilite que le if then else
Merci pour le lien (elmoricq)
Marsh Posté le 13-08-2008 à 15:20:58
sauf que goto dans un environnement objet, c'est la porte ouverte à l'arrachage de pied avec une kalashnikov.
Taz : mattes boost::exception dans la 1.36
Marsh Posté le 14-08-2008 à 11:18:13
C'est très très chiant que ça dérive pas de boost::exception.
Dans le fond c'est bien boost, mais les packageurs des différents OS font chier:
- sous linux c'est globalement dispo, mais y en a beaucoup qui package boost en 36 modules, certains avec runtime d'autres pas
- sous windows on peut rêver
- sous les autres OS, y en a qui s'aggripe à leur gcc 2.95 et ça foire, du coup, écrire un programme de 1000 lignes qui nécessitent de compiler boost, ils aiment pas ...
D'ailleurs aujourd'hui, je ne connais pas de gros projets libres qui utilisent boost (je ne parle pas du piquage de code ça et là).
Marsh Posté le 14-08-2008 à 12:13:32
libre je sais pas, mais bon toute la code base de Adobe est basé dessus. Moi perso, c'est boost dés que je peut.
Marsh Posté le 14-08-2008 à 12:16:16
Taz a écrit : D'ailleurs aujourd'hui, je ne connais pas de gros projets libres qui utilisent boost (je ne parle pas du piquage de code ça et là). |
LyX est le plus gros projet libre que je connais qui utilise boost.
Marsh Posté le 14-08-2008 à 16:00:29
Bah lyx ils doivent embarquer boost aussi
Marsh Posté le 17-08-2008 à 00:02:25
Taz a écrit : - sous les autres OS, y en a qui s'aggripe à leur gcc 2.95 et ça foire, du coup, écrire un programme de 1000 lignes qui nécessitent de compiler boost, ils aiment pas ... |
Tellement vrai. C'est particulièrement chiant sur des systèmes frustres genre des vieilles solaris
Citation : D'ailleurs aujourd'hui, je ne connais pas de gros projets libres qui utilisent boost (je ne parle pas du piquage de code ça et là). |
D'une certaine manière, qt4/kde s'en sert, vu que tout le système de build passe par cmake (qui nécessite quelques libs boost). A partir de là, builder qt sur de vieilles stations, c'est pas commode
Marsh Posté le 13-08-2008 à 10:42:57
Bonjour,
Je travaille avec visual C++ 2005 professionel
j'ai du code du genre
if ()
{
if ()
{
if ()
{
}
else
{
}
}
else
{
}
}
else
{
}
// Donc en gros plusieurs if then else imbriques
Et a un moment j'ai juste
if
{
message_d_erreur;
goto _END;
}
_END:
J'utilise jamais le Goto en fait
Mais là y en avait dans le code que j'utilise
Du coup pour les ca de sortie plutot que d'avoir trop de if imbriques, je fais juste un if et un goto _END; pour sortir et eviter un else
Sauf que comme ca se passe bien je passe pas dans le goto
et donc je vais dans le else ( qui nexiste pas )
sauf que au lieu de continuer apres le code, le programme va a l'etiquette
Y a t-il un goto implicite lorsque l'on n'ecrit pas explicitement la partie else ?
Car si j'ecris
if ()
{
// code sans goto
}
suite du code
...
Je vais dans la suite du code
si j'ecris
if ()
{
// code
goto _END;
}
suite du code
...
Je vais a l'etiquette ( sans passer par le code du if bien entendu )
J'espere avoir ete clair sur ma question