Le 14 septembre 2017, nous avons publié une version actualisée de notre Politique de confidentialité. En utilisant video2brain.com vous vous engagez à respecter ces documents mis à jour. Veuillez donc prendre quelques minutes pour les consulter.

C++ : ​La gestion des erreurs avec les exceptions

Bien gérer les erreurs

TESTEZ LINKEDIN LEARNING GRATUITEMENT ET SANS ENGAGEMENT

Tester maintenant Afficher tous les abonnements
La gestion structurée des erreurs est un défi auquel chaque langage tente de répondre à sa façon. Évaluez les risques de perte ou d'altération de l'information quand on s'appuie sur des codes de retour. Aussi, découvrez les avantages des exceptions.
03:31

Transcription

Pour bien gérer les erreurs d'un programme, il faut d'abord distinguer les deux types d'erreurs auxquels un programme peut faire face. La première famille d'erreurs ce sont les erreurs logiques. Une erreur logique survient quand votre code se retrouve dans une situation qui ne peut théoriquement pas arriver ou qu'il ne peut pas traiter de façon satisfaisante. Prenons quelques exemples classiques, on demande le huitième élément d'une collection de trois entiers, on tente de fermer un canal de communication qui n'est pas ouvert ou on modifie un devis dont le numéro est introuvable etc. Ces exemples sont triviaux mais dans une application complexe la chaîne de responsabilité est longue et implique souvent plusieurs modules conçus indépendamment les uns des autres. Certaines de ces erreurs se produisent d'ailleurs dans des contextes tellement rares que leur détection en est très complexe. À l'origine ces erreurs sont des erreurs de programmation qui doivent disparaître de la version finale, une fois le débuggage effectué. Pour cette raison de telles erreurs doivent être détectées et signalées dès que possible et de la manière la plus visible possible, quitte à arrêter l'application. C'est le meilleur moyen de les identifier et de les corriger pendant la phase de mise au point. La seconde famille d'erreurs, elle, concerne les erreurs d’exécution, appelées runtime en anglais. Elles surviennent quand une cause que l'on peut prévoir dès la conception, empêche le traitement d'aboutir, souvent un problème technique. On peut citer un accès refusé à une ressource, un serveur qui ne répond pas, la saturation d'un flux de données. L'application finale doit supporter ce type de problèmes et informer, voire accompagner, au mieux l'utilisateur. Que ce soit une erreur logique ou une erreur d’exécution, les langages proposent deux approches de gestion d'erreurs. La première approche consiste à utiliser une valeur de retour pour signaler un problème de traitement. Prenons l'exemple d'une erreur d’exécution de type ouverture de fichier. La fonction standard open du langage C, dans cet exemple, quasi inchangée depuis 40 ans, retourne moins un, en cas d'échec. En consultant errno, une variable globale, on peut même connaître la nature de l'erreur. La valeur de retour paraît être ici une solution acceptable pour donner une information précise à l'utilisateur avec l'Answitch notamment. Prenons un exemple qui allonge la chaîne de responsabilité entre open et l'utilisateur. La fonction creer retourne une information complète en cas de problème, comme on le voit indiqué par la flèche du haut et return errno. Mais la fonction sauver_config, elle, binarise cette information et la transforme en un vrai « ça fonctionne » ou faux « ça ne fonctionne pas ». Ajoutez deux ou trois intermédiaires dans la boucle, et vous penserez que tout c'est bien passé. Le défaut principal de cette approche est que les maillons qui ne savent pas gérer le problème ont la responsabilité de le gérer au moins en le relayant correctement. L'approche par exception, elle, est plus logique. Les maillons qui ne savent pas gérer le problème, ne font rien. Seuls ceux qui savent le gérer, au moins partiellement, le gèrent. Ainsi une exception, une fois déclenchée, interrompt le traitement en cours ainsi que tous les traitements qui s'appuient dessus tant qu'aucun maillon n'a demandé à capter cette exception. Ainsi aucun risque d'inhibition et même d'altération de l'information. En langage imagé, l'erreur passe directement du producteur au consommateur. L'exception est donc un moyen efficace de traiter les erreurs et nous allons les voir en action dans le chapitre suivant.

C++ : ​La gestion des erreurs avec les exceptions

Profitez des nombreux atouts des exceptions pour gérer les erreurs dans vos développements C++. Apprenez à les déclencher, les intercepter, les personnaliser, etc.

56 min (13 vidéos)
Aucun commentaire n´est disponible actuellement
 
Logiciel :
Spécial abonnés
Date de parution :20 oct. 2016

Votre formation est disponible en ligne avec option de téléchargement. Bonne nouvelle : vous ne devez pas choisir entre les deux. Dès que vous achetez une formation, vous disposez des deux options de consultation !

Le téléchargement vous permet de consulter la formation hors ligne et offre une interface plus conviviale. Si vous travaillez sur différents ordinateurs ou que vous ne voulez pas regarder la formation en une seule fois, connectez-vous sur cette page pour consulter en ligne les vidéos de la formation. Nous vous souhaitons un excellent apprentissage avec cette formation vidéo.

N'hésitez pas à nous contacter si vous avez des questions !