Section courante

A propos

Section administrative du site

Les instructions d'exceptions en Free Pascal sont au nombre de quatre et sont un ajout au Pascal d'origine :

TRY ... EXCEPT ... END

L'instruction «TRY» de Free Pascal permet d'effectuer la gestion d'une erreur aussi simplement qu'en Java par exemple. On encapsule les instructions à risque entre les mots réservés «TRY» et «EXCEPT», puis on met le traitement d'erreur entre les mots réservés «EXCEPT» et «END». Voici donc sa syntaxe :

TRY
 instructionarisque
EXCEPT
 instruction_exécuté_si_exception
END

ON ... DO

Il est pratique de pouvoir effectuer l'interception d'erreur, toutefois il peut arriver que plusieurs situation d'erreur se produise, de se fait, il est essentiel de pouvoir identifier, de laquelle il s'agit. Free Pascal, à la manière des vieux interpréteurs Basic comme BASICA et GWBASIC permet d'effectuer une branchement sur les instructions souhaité. Voici enfin sa syntaxe situer dans la zone de traitement d'exception :

TRY
 instructionarisque
EXCEPT
 ON codeerreur1 DO instructionexception1;
 ON codeerreur2 DO instructionexception2;
 ...
END

On peut également rajouter une instruction d'exception exécuté par défaut au cas où aucun des codes d'erreurs n'est rencontré, on utilisera dans ce cas l'instruction «ELSE» :

TRY
 instructionarisque
EXCEPT
 ON codeerreur1 DO instructionexception1;
 ON codeerreur2 DO instructionexception2;
 ...
ELSE
 instructionexceptionpardefaut;
END

TRY ... FINALLY ... END

Le déclenchement d'exception est parfois dangereux lorsqu'on pense au fait qu'on peut gaspiller des ressources mémoire ou oublier d'arrêter un périphérique par exemple. Il existe une instruction permettant de s'assurer que quoi qu'il arrive un bloc d'instruction sera exécuté même si des problèmes auront lieu. Cette instruction c'est «TRY» et «FINALLY». Contrairement aux instructions «TRY EXCEPT» s'exécutant que si une exception à lieu, le zone «FINALLY» est assurément exécuté ! Voici donc sa syntaxe :

TRY
 instructionpeutetreexecuter
FINALLY
 instruction_exécuté_a_la_fin_meme_si_exception
END

RAISE

Naturellement, une exception peut être déclenché par programmation. L'instruction permettant d'effectuer cette opération est «RAISE». Voici enfin les deux syntaxes autorisé :

RAISE instancedexception

ou

RAISE instancedexception AT expressiondadresse

Exemple

Voici un exemple montrant l'utilisation de ses instructions :

  1. Program ExceptionSamples;
  2.  
  3. {$MODE Delphi}
  4.  
  5. Uses SysUtils;
  6.  
  7. Var
  8.  Diviseur:Integer;
  9.  
  10. BEGIN
  11.  Try
  12.   Diviseur := 0;
  13.   WriteLn('1/0 = ',1/Diviseur);
  14.  Except
  15.   On EDivByZero do WriteLn('Division par 0');
  16.  Else
  17.   WriteLn('Exception inconnu');
  18.  End;
  19. END.

on obtiendra le résultat suivant :

1/0 = Division par 0


Dernière mise à jour : Samedi, le 13 février 2016