Généralités
Schéma du mécanisme d’exception
La structure try … catch
Syntaxe du catch
Syntaxe de throw
Déclaration des exceptions levées par une fonction
La fonction terminate()
La fonction unexpected()
Exemple complet
Généralités sur les exceptions
Le langage C++ nous propose une gestion efficace des erreurs pouvant survenir pendant l’exécution :
erreurs matérielles : saturation mémoire, disque plein …
erreurs logicielles : division par zéro …
La solution habituellement pratiquée est l’affichage d’un message d’erreur et la sortie du programme avec le renvoi d’un code d’erreur au programme appelant.
Schéma du mécanisme d’exception
1. construction d’un objet (d’un type quelconque) qui représente l’erreur
2. lancement de l’exception (throw)
3. l’exception est alors propagée dans la structure de contrôle try … catch englobante
4. cette structure essaye attraper (catch) l’objet
5. si elle n’y parvient pas, la fonction terminate()est appelée.
try{
// …
throwobjet // lancement de l’exception
}
catch( type ) {
// traitement de l’erreur
}
La structure try … catch
Quand une exception est détectée dans un bloc try, le contrôle de l’exécution est donné au bloc catch correspondant au type de l’exception (s’il existe).
Un bloc try doit être suivi d’au moins un bloc catch Si plusieurs blocs catch existent, ils doivent intercepter un type d’exception différent. Quand une exception est détectée, les destructeurs des objets inclus dans le bloc trys ont appelés avant d’appeler un bloc catch.
A la fin du bloc catch, le programme continue son exécution sur l’instruction qui suit le dernier bloc catch.
Les exceptions (99 KO) (Cours PDF)