goto est pertinent en C pour collecter les ressources en cas de problèmes.
Pour gérer les ressources, en C++ on part sur le RAII. On n'a plus besoin d'imposer une approche SESE (Single Entry Single Exit) où l'on factorise la collecte des ressources (cas nominaux et cas exceptionnels/erreurs).
A partir du moment où les ressources sont surveillées, et que l'on n'est plus dans du SESE only, libre à nous de remonter des exceptions (préférables car l'impact est nul sur les chemins nominaux avec les compilateurs d'aujourd'hui, et que les erreurs ne peuvent pas être ignorées, et qu'en cas de soucis, les perfs on s'en fout) ou de continuer à remonter les codes d'erreurs à la main (ce qui va impacter les performances vu que l'on va avoir un if toutes les 2-3 lignes pour tester chaque appel de fonction et remonter en cas de soucis—enfin, si on veut écrire un code robuste).
[^] # Re: Le cas goto
Posté par lmg HS (site web personnel) . En réponse au journal Apple, le SSL les goto et les accolades. Évalué à 1.
goto est pertinent en C pour collecter les ressources en cas de problèmes.
Pour gérer les ressources, en C++ on part sur le RAII. On n'a plus besoin d'imposer une approche SESE (Single Entry Single Exit) où l'on factorise la collecte des ressources (cas nominaux et cas exceptionnels/erreurs).
A partir du moment où les ressources sont surveillées, et que l'on n'est plus dans du SESE only, libre à nous de remonter des exceptions (préférables car l'impact est nul sur les chemins nominaux avec les compilateurs d'aujourd'hui, et que les erreurs ne peuvent pas être ignorées, et qu'en cas de soucis, les perfs on s'en fout) ou de continuer à remonter les codes d'erreurs à la main (ce qui va impacter les performances vu que l'on va avoir un if toutes les 2-3 lignes pour tester chaque appel de fonction et remonter en cas de soucis—enfin, si on veut écrire un code robuste).
De la lecture sur ces sujets: http://alexandre-laurent.developpez.com/cpp/retour-fonctions-ou-exceptions/