« Programmation C++/Les exceptions » : différence entre les versions

Contenu supprimé Contenu ajouté
mAucun résumé des modifications
Ligne 1 :
{{Programmation C++}}
 
== ExceptionExceptions en C++ ==
Une exception est l'interruption de l'exécution du programme à la suite d'un événement particulier. Le but des exceptions est de réaliser des traitements spécifiques aux événements qui en sont la cause. Ces traitements peuvent rétablir le programme dans son mode de fonctionnement normal, auquel cas son exécution reprend. Il se peut aussi que le programme se termine, si aucun traitement n'est approprié.
 
Ligne 10 :
En général, une fonction qui détecte une erreur d'exécution ne peut pas se terminer normalement. Comme son traitement n'a pas pu se dérouler normalement, il est probable que la fonction qui l'a appelée considère elle aussi qu'une erreur a eu lieu et termine son exécution. L'erreur remonte ainsi la liste des appelants de la fonction qui a généré l'erreur. Ce processus continue, de fonction en fonction, jusqu'à ce que l'erreur soit complètement gérée ou jusqu'à ce que le programme se termine (ce cas survient lorsque la fonction principale ne peut pas gérer l'erreur)<ref>http://www.developpez.com/c/megacours/c3770.html</ref>.
 
=== Lancer une exception ===
Lancer une exception consiste à retourner une erreur sous la forme d'une valeur (message, code, objet exception) dont le type peut être quelconque (<code>int</code>, <code>char*</code>, <code>MyExceptionClass</code>, ...).
 
Ligne 17 :
<source lang="cpp"> throw 0;</source>
 
=== Attraper une exception ===
 
Pour attraper une exception, il faut qu'un bloc encadre l'instruction directement, ou indirectement, dans la fonction même ou dans la fonction appelante, ou à un niveau supérieur. Dans le cas contraire, le système récupère l'exception et met fin au programme.
Ligne 55 :
</source>
 
=== Attraper toutes les exceptions ===
 
Spécifier les points de suspension dans la clause <code>catch</code> permet d'attraper tous les autres types d'exception :
Ligne 75 :
</source>
 
=== Déclaration des exceptions lancées ===
 
La déclaration d'une fonction lançant un nombre limité de type d'exception, telle que la fonction <code>division</code> de l'exemple précédent, peut être suivie d'une liste de ces types d'exceptions dans une clause <code>throw</code> :