C'est peut-être une position dogmatique, mais quand on à des fonctionnalités dans un langage, c'est pour qu'on s'en serve.
En C++, justement, la méthode standard pour gérer le cleanup, exceptions ou pas, erreur ou pas, c'est de le faire dans un destructeur d'une classe instanciée dans la pile. Tu peux ensuite utiliser les exceptions ou les return sans risquer le moindre leak ou autre chose, puisque tes destructeurs seront forcement appelés avant de sortir de ta fonction. Et des classes qui font du cleanup dans leur déstructeurs, la bibliothèque standard en est remplie (et au pire, il y a boost).
Le guide de google pour le C++, en plus d'être décrié par beaucoup de programmeurs C++, ne banni pas les exceptions parce que les goto sont mieux, mais parce si tu code en C++ comme tu code en C, comme c'est trop souvent le cas, les exceptions peuvent faire péter tout ton code en zappant les cleanups faits à l'ancienne. C'est encore plus vrai si tu mélange du code C++ et du C, et c'est sans doute pour cette raison que c'est banni chez google. Mais ça ne changera pas le fait que les exceptions fassent partie du langage et que tu ne peux pas faire grand chose si tu veut être sûr de ne pas lever d'exceptions.
Placer un goto légitime dans du code C++ est bien plus compliqué que dans du code C.
[^] # Re: Julia
Posté par Batchyx . En réponse au journal De l'enseignement de la programmation en classe préparatoire. Évalué à 8.
C'est peut-être une position dogmatique, mais quand on à des fonctionnalités dans un langage, c'est pour qu'on s'en serve.
En C++, justement, la méthode standard pour gérer le cleanup, exceptions ou pas, erreur ou pas, c'est de le faire dans un destructeur d'une classe instanciée dans la pile. Tu peux ensuite utiliser les exceptions ou les return sans risquer le moindre leak ou autre chose, puisque tes destructeurs seront forcement appelés avant de sortir de ta fonction. Et des classes qui font du cleanup dans leur déstructeurs, la bibliothèque standard en est remplie (et au pire, il y a boost).
Le guide de google pour le C++, en plus d'être décrié par beaucoup de programmeurs C++, ne banni pas les exceptions parce que les goto sont mieux, mais parce si tu code en C++ comme tu code en C, comme c'est trop souvent le cas, les exceptions peuvent faire péter tout ton code en zappant les cleanups faits à l'ancienne. C'est encore plus vrai si tu mélange du code C++ et du C, et c'est sans doute pour cette raison que c'est banni chez google. Mais ça ne changera pas le fait que les exceptions fassent partie du langage et que tu ne peux pas faire grand chose si tu veut être sûr de ne pas lever d'exceptions.
Placer un goto légitime dans du code C++ est bien plus compliqué que dans du code C.