2010-06-07 4 views
2

Possible en double:
C++ - Arguments for Exceptions over Return Codesce qui est mieux, jeter une exception ou retourner la valeur non nulle?

Pendant que vous faites la programmation C++, vous avez deux choix de signaler une erreur. Je suppose que beaucoup d'enseignants vous suggéreraient de lancer une exception, qui dérive de std :: exception. Une autre façon, qui pourrait être plus "C", est de retourner une valeur non nulle, car zéro est "ERROR_SUCCESS".

Définitivement, le retour d'une exception peut fournir des informations beaucoup plus de l'erreur et de récupération; alors que le code va un peu gonfler, et faire exception à la sécurité dans votre esprit est un peu difficile pour moi, au moins. Une autre façon de retourner quelque chose d'autre, rendra la déclaration d'une erreur beaucoup plus facile; le défaut est que la gestion de la récupération sera un problème potentiellement important.

Alors, en tant que bons programmeurs, quelle serait votre préférence, sans tenir compte de l'opinion de votre patron? Pour moi, je voudrais retourner des valeurs non nulles.

+6

Exceptions gonflent le code? Je pense que la vérification d'une valeur de retour différente de zéro après chaque appel de fonction est beaucoup plus de bruit qu'un essai à un endroit stratégique. – sth

+0

Voir http://stackoverflow.com/questions/1849490/c-arguments-for-exceptions-over-return-codes, http://stackoverflow.com/questions/99683/which-and-why-do-you- prefer-exceptions-or-return-codes, etc. –

+0

oui, les exceptions gonflent le code. Au moins, pensez donc que les gens de Google http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml?showone=Exceptions#Exceptions vont à la section des exceptions – Tebe

Répondre

6

À partir du C++ FAQ: utilisez des exceptions pour les erreurs. À mon avis, la logique sous-jacente est que, avec les codes de retour, il incombe à l'appelant de votre code de vérifier les codes de retour pour gérer les erreurs. Cela permet alors aux utilisateurs de votre code d'entrer potentiellement dans une mauvaise situation. Des exceptions, d'autre part, doivent être traitées, ou la bulle de la pile d'appel jusqu'à ce qu'il termine le programme. À mon avis, si vous écrivez en C++ (et souhaitez adhérer à des idiomes C++), et que vous voulez utiliser la gestion des erreurs, les exceptions sont la voie à suivre.

1

La gestion des erreurs est beaucoup plus facile grâce à des exceptions la plupart du temps. L'écriture de code de sécurité d'exception est également assez facile. Je suis fainéant. Je prends la route facile.

+0

Cela ne coûte-t-il pas plus cher? effort de codage? Vous ** ** vérifiez chaque code de retour, n'est-ce pas? Par opposition à un essai/exception couvrir un bloc de code, ce qui serait un morceau de code de gestion des erreurs par opposition à beaucoup. – Mawg

Questions connexes