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

Contenu supprimé Contenu ajouté
indentation
Ligne 1 :
{{Programmation C++}}
 
{{Programmation C++}}
== Les exceptions ==
=== Exception C++ ===
 
<!-- source: http://www.developpez.com/c/megacours/c3770.html -->
 
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 11 ⟶ 9 :
Les exceptions permettent une gestion simplifiée des erreurs, parce qu'elles en reportent le traitement. Le code peut alors être écrit sans se soucier des cas particuliers, ce qui le simplifie grandement. Les cas particuliers sont traités dans les gestionnaires d'exception.
 
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>.
 
<!-- -fin source- -->
 
=== Exception C++ ===
 
==== 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 24 ⟶ 18 :
<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 62 ⟶ 56 :
</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 82 ⟶ 76 :
</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> :