Université des Sciences et Technologies de Lille
Licence Miage - Programmation 1
Cours 5 : les exceptions
Une exception est une situation inhabituelle, qui ne s'accorde
pas avec le cas général prévu par le programme, la procédure ...et
qui demande donc une gestion spécifique. L'avantage du mécanisme
d'exception est qu'il permet un traitement uniforme des erreurs au
sein du programme ADA.
Exceptions prédéfinies
- CONSTRAINT_ERROR : activée quand on ne respecte pas une
contrainte d'intervalle, de tableau ...
- STORAGE_ERROR : problème de mémoire
- PROGRAM_ERROR : activée quand on appelle un
sous-programme inexistant, quand l'appel à une fonction se
termine sans résultat retourné (return)...
- NUMERIC_ERROR : activée quand une variable numérique
est trop grande ...
- TASKING_ERROR : quand on a un problème avec une
tâche. eh eh.
Il y également des exceptions prédéfinies liées aux
entrées-sorties
- ADA.IO_EXCEPTIONS.DATA_ERROR: activée si la valeur lue avec
un get ne correspond pas au format attendu.
N : Natural;
get(N);
-- A -> raised ADA.IO_EXCEPTIONS.DATA_ERROR
-- -2 -> raised CONSTRAINT_ERROR
Une exception, lorsqu'elle est déclenchée, se propage à travers tous
les niveaux du programme. Elle interromp l'exécution des blocs qu'elle
traverse tant qu'elle
n'est désactivée en étant capturée.
Que faire avec une exception : activation / capture
On peut la déclencher, ou l'activer, manuellement : raise ... ;
On peut ensuite la capturer, c'est-à-dire prévoir un traitement adéquat à la situation pathologique.
exception
when CONSTRAINT_ERROR => put("il y a un probleme dans la fonction");
raise CONSTRAINT_ERROR;
La capture peut se faire à tous les niveaux de propagation de
l'exception, mais toujours en fin d'un bloc d'exécution. Il
faut noter que l'endroit où l'on choisit de capturer une exception
n'est pas indifférent : on n'accède pas au même environnement à
l'intérieur ou à l'extérieur d'une fonction, par exemple.
Une fois capturée, une exception est désactivée.
Déclarer ses propres exceptions
Il est possible de définir une exception, de la même manière que l'on
définit un type ou déclare une variable. Une exception utilisateur se manipule ensuite comme
une exception prédéfinie.
Erreur_syntaxe : Exception;