next up previous contents
Next: Sémantique d'un traitement d'exceptions Up: Les exceptions Previous: Lévée d'exceptions

Traitement d'exceptions

Si une exception est levée et jamais traitée, cela se traduit par l'arrêt complet de l'exécution et par un message de diagnostic de l'environnement d'exécution qui signale le nom de l'exception responsable de l'interruption. Un traitement d'exceptions est une construction syntaxique permettant de faire face à d'éventuelles lévées d'exceptions dans une partie du programme. Dans le cas où elle existe, cette construction doit toujours apparaître à la fin d'un bloc, après la dernière de ses instructions.

Exemple 1:

procedure division is
   x,y : integer; 
begin
   put("Entrez un entier:  "); get(x); -- 1
   put("Entrez un entier:  "); get(y);
   put("Le resultat de la division de  "); 
   put(x,2); put(" par  "); put(y,2); 
   put(" est  "); put(x/y);
exception
   when Data_Error => 
        put_line("Entree invalide. Au revoir");
end division;
Dans ce bloc, toute la partie entourée des mots-clés begin et exception correspond aux instructions du bloc; toute la partie entourée par exception et end est un traitement d'exceptions. Ici, il sert à traiter l'exception Data_Error lorsqu'elle est lévée par les intructions du bloc. Par exemple, si l'entrée fournie pour get(x), n'est pas un entier, get lève l'exception Data_error. Le flot de contrôle est interrompu (au point marqué par - 1 dans le texte) et inmédiatement transféré aux instructions prevues à la fin du bloc pour traiter cet exception . Dans notre exemple, il s'agit du code à droite de => dans:
exception
   when Data_Error => 
        put_line("Entree invalide. Au revoir");
end division;
Ainsi, le code put_line("Entree invalide. Au revoir") est exécuté, puis l'exécution du bloc fini. Un traitement d'exceptions peut traiter plusieurs exceptions. Dans ce cas, on prévoit plusieurs cas when avec le ou les noms des exceptions à traiter, et une suite d'instructions à exécuter dans chaque cas.
 begin
  B1;B2;B3; --- Instructions du bloc
 exception
   when E_1    => I1;
   when E_2    => I2;
    .....
   when others => Im;
 end;
Dans ce schéma, le cas when others permet de traiter avec Im, toute exception dont le nom n'apparaît dans aucun des cas précédents.



 
next up previous contents
Next: Sémantique d'un traitement d'exceptions Up: Les exceptions Previous: Lévée d'exceptions
Maria-Viginia Aponte
2001-11-21