Les exceptions que peuvent générer les fonctions sont une caractéristique importante de ces fonctions, il est donc utile qu'elles figurent dans l'interface de cette fonction: pour un utilisateur de fonction, afin de pouvoir traiter les comportements ``anormaux'' il faut connaître les exceptions que peuvent lever cette fonction.
On peut donc en C++ préciser dans l'entête d la fonction les exceptions qui pourront être levées à partir de cette fonction.
Exemple:
void f() throw (erreur, char *p, int) { //... }
f
ne pourra lever que des exceptions des types
précisés après le throw
, cette déclaration permet
de définir correctement l'interface avec d'autres
fonctions en tenant compte des exceptions. Si une
exception non prévue dans la liste apparaît, la fonction
unexpected()
sera appelée. S'il n'y a pas de
spécification d'exception, toutes les exceptions
possibles sont autorisées :
void f() throw() //aucune exception { //... }; void g() //toutes exceptions { //... };