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

Contenu supprimé Contenu ajouté
Ligne 104 :
 
Une déclaration avec clause <code>throw</code> limite donc les types d'exception que la fonction peut lancer.
Toute tentative de lancer un autre type d'exception est détectée à l'exécution et provoque l'appel de la fonction <code>std::terminate()</code>, puis l'arrêt immédiat du programme. Ce comportement est spécifique au C++, et amène souvent les développeurs à remplacer cette clause par une simple documentation.
 
De plus, l'utilisation de la clause <code>throw</code> reste rare car rendrendant les pointeurs de fonctions incompatibles s'ils ne possèdent pas une clause couvrant les types lancés par la fonction pointée.
 
Il est possible de fournir sa propre fonction <code>std::terminate()</code> appelée en cas d'exception non attrapée, grâce à <code>std::set_terminate()</code>.
 
<source lang="cpp">