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

Contenu supprimé Contenu ajouté
Tavernierbot (discussion | contributions)
m Robot : ajoute Programmation C++ (livre)
Aucun résumé des modifications
Ligne 21 :
Le lancement se fait par l'instruction <code>throw</code> :
 
<source lang="cpp"> throw 0;</source>
 
==== Attraper une exception ====
Ligne 27 :
 
Les instructions <code>try</code> et <code>catch</code> sont utilisées pour attraper les exceptions.
<source lang="cpp">
 
try{
... // code lançant une exception (appel de fonction, ...)
Ligne 35 :
cerr << "Exception " << code << endl;
}
</source>
 
Exemple de fonction lançant une exception :
<source lang="cpp">
 
int division(int a,int b)
{
Ligne 54 :
}
}
</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">
 
void main()
{
Ligne 72 :
}
}
</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">
 
int division(int a,int b) throw(int)
{
Ligne 81 :
else return a/b;
}
</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">
 
int division(int a,int b) throw(...) // n'importe quel type d'exception
{
Ligne 89 :
else return a/b;
}
</source>
 
Si une fonction ne lance aucune exception, on peut la déclarer avec une clause <code>throw</code> vide :
<source lang="cpp">
 
int addition(int a,int b) throw() // aucune exception
{
return a+b;
}
</source>
 
Cette clause peut être présente dans les cas suivants :
* prototype de fonction