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

Utiliser le bloc try pour une fonction

Testez gratuitement nos 1300 formations

pendant 10 jours !

Tester maintenant Afficher tous les abonnements
La syntaxe try pour une fonction est utile dans des cas bien spécifiques. Vous aurez vu l'ensemble des syntaxes disponibles en C++ 11.
04:39

Transcription

Nous avons maintenant une application qui gère ces erreurs avec des exceptions, qui les déclenche et qui les capte au niveau du formulaire pour afficher les problèmes à l'utilisateur. On a maintenant une dernière notation à avoir pour que notre vision des exception et des syntaxes des exceptions soit complète, c'est le bloc try de fonction. Alors, pour voir son utilité, nous allons introduire dans notre programme un nouveau type de champ, le ChampUrl que j'ai préparé ici. Ce ChampUrl à une particularité, il dérive d'un champ existant, Champtexte, et ce Champtexte, si vous vous rappelez bien on va regarder en vitesse, lève une exception dans certain cas d' invalid argument. On peut supposer que je dois de capter cette exception pour un traitement spécial. Je vais me retrouver dans une situation gênante car si j'essaye de capter mon exception comme on l'a vu avec un try catch dans mes accolades, et bien ce try catch arrive trop tard ! L’exception a lieu ici, avant que que le bloc avec l'accolade ouvrante se déroule. C'est donc trop tard ! De la même façon, si j'avais un objet complexe, ici je n'ai qu'un booléen pour par exemple, du https sur mon URL. Mais si j'avais un ojbet plus complexe gérant par exemple les certificats du https 1 du ssl, cet objet si il lève une exception en cas de problème sur un certificat. De la même façon je ne peux pas capter cette exception et effectuer le traitement au niveau de mon constructeur. C'est typiquement pour les constructeurs que ce problème a été créé. Il est plus facile après de gérer des exceptions sur d'autres types de fonctions mais essentiellement pour les constructeur il y a souvent beaucoup de choses, faites juste avant les accolades d'un constructeur, et pour toutes ces choses là il faut pouvoir capter une exception en amont. Donc pour ça je met mon bloc try ici ! Juste après la parenthèse fermante, la liste des arguments. Même si je n'ai pas de deux points, ce sera toujours après les parenthèses et la liste d'arguments. Et le catch se met aux accolades fermantes de ma fonction, ici de ma méthode. Donc je peux mettre plusieurs catch si j'ai plusieurs exceptions à traiter. Et puis je vais pouvoir spécifier l'exception, ici, invalid argument. Exception [ inaudible ] Alors il y a une chose très importante sur le bloc try de fonction c'est que l'exception n'est pas neutralisée. Ça veut dire que je vais faire un catch, je vais traiter cette exception, mais e va être relayé aux couches du dessus, Je n'ai pas ici neutralisé mon exception, par contre vous pouvez tout à fait faire un try catch, au dessus, dans le main ou dans la classe qui implémente, qui instensie votre champ URL. Mais en tous cas, au niveau d'un bloc try catch de fonction il n'y a pas de neutralisation de l'exception, contrairement aux autres try catch, ceux que l'on fait habituellement. Ici j'ai fait un traitement, pour que mon code soit complet, je vais inclure aussi les bibliothèque nécessaire à mon Clog donc c'est iostream. Et aussi une bibliothèque pour l'exception invalid argument qui est stdexept. Donc là, j'ai complété mon champURL pour capter l'exception et faire un traitement de mon exception sur Champtexte. Si elle arrive. Donc ici je vais justement la provoquer ! Je vais m'inspirer de champTexte sauf que je vais prendre Url que je rajoute ici, donc un booléen pour le ssl et surtout, je met des valeurs non valides pour provoquer l'exception, ici, je rajoute donc l'inclusion de mon .h sur l'Url pour que ça puisse compiler, Je vais pouvoir voir le déclenchement de l'exception car je ne l'ai pas neutralisée mais au moins l'affichage de mon log. Donc l'exception intervient, mais tout en haut de mon affichage de console, j'ai bien donc le message du what qui est appelé ici au niveau de mon log. Vous avez maintenant une connaissance exhaustive de toutes les connotations liées aux exceptions en C++, dans le chapitre suivant nous allons nous attarder sur les bonnes pratiques ratachées à l'utilisation de ces syntaxes.

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 !