2017-05-28 3 views
1

Je suis sur le point de créer ma première vraie application C++ (un jeu en 2D) après quelques années à m'enseigner comment programmer. Le problème que je rencontre est la plupart du temps, les tutoriels ignorent souvent les techniques de gestion des erreurs (ou font le strict minimum). Afin d'essayer et d'apprendre comment la gestion des erreurs fonctionne, j'ai commencé par essayer de comprendre les codes d'erreur C et errno et leurs avantages/inconvénients. Après cela, j'ai regardé std::error_code/std::error_condition de C++ 11, mais j'ai du mal à comprendre leur signification et leur amélioration par rapport à quelque chose comme errno. Que fait exactement quelque chose comme std::error_code une amélioration par rapport à errno?Avantages de std :: error_code/error_condition sur errno?

+2

tout en notant: Utilisez-vous déjà des exceptions? –

+0

J'essaie de les éviter à cause de la surcharge d'exécution possible et de la nécessité d'avoir des performances pour mon jeu monothread. – Jason

+0

'std :: error_code' est plus typé. – AndyG

Répondre

0

errno est un très mauvais moyen de gérer les erreurs dans les ordinateurs d'aujourd'hui, pour un, il n'est pas thread-safe. Si vous voulez faire des jeux, il y a des chances que vous ayez besoin de threads. Std :: error_code peut en fait emballer errno avec l'amélioration supplémentaire que vous pouvez les convertir en vos propres erreurs.

Jetez un oeil à https://www.youtube.com/watch?v=w7ZVbw2X-tE et je suis sûr que vous serez beaucoup plus sage à propos de error_code.

En ce qui concerne les exeptions, assurez-vous de bien les traiter. Dans les systèmes embarqués, vous ne pouvez généralement pas vous permettre des exceptions parce que vous ne savez pas combien de temps ils prendront et ils prendront plus de place. Dans les jeux cependant, il est vrai que les sociétés de jeu AAA n'utilisent pas d'exceptions, mais elles écrivent leurs propres conteneurs spéciaux pour cela (voir par exemple EASTL et les bibliothèques et discussions WG21-SG14). Si vous écrivez votre première partie, utilisez les méthodes standard, y compris les exceptions, car vous ne pourrez pas écrire vos propres éléments. Si une exception est levée et que vous ne l'attrapez pas, votre programme se terminera et l'apprentissage s'ensuivra.

Assurez-vous de vous apprendre à écrire moderne C++, en utilisant au moins 14 C++ et les fonctionnalités qui fournit, cela à la fois réduire vos problèmes avec la sécurité de la mémoire et la perte de cheveux;)