« Programmation C++/Les exceptions » : différence entre les versions
Contenu supprimé Contenu ajouté
remise en forme snippet code (indentation ANSI) |
Aucun résumé des modifications |
||
Ligne 1 :
{{Programmation C++}}
== Les exceptions ==
Ligne 21 ⟶ 22 :
Le lancement se fait par l'instruction <code>throw</code> :
<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.
Les instructions <code>try</code> et <code>catch</code> sont utilisées pour attraper les exceptions.
<source lang="cpp">
... // code lançant une exception (appel de fonction, ...)
cerr << "Exception " << code << endl;
</source>
Exemple de fonction lançant une exception :
<source lang="cpp">
</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 :
<source lang="cpp">
</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> :
<source lang="cpp">
</source>
Par défaut, la fonction peut lancer n'importe quel type d'exception. La déclaration de la fonction <code>division</code> sans clause <code>throw</code> est donc équivalent à la déclaration suivante :
<source lang="cpp">
</source>
Si une fonction ne lance aucune exception, on peut la déclarer avec une clause <code>throw</code> vide :
<source lang="cpp">
</source>
Cette clause peut être présente dans les cas suivants :
* prototype de fonction
Ligne 115 ⟶ 125 :
#include <exception>
#include <iostream>
void maTerminate()
{
std::cout << "Si vous en etes la, vous etes mal." << std::endl;
}
int main()
{
|