Tout programme n’est pas à l’abri d’erreurs : valeur erronée, fichier introuvable, type de donnée incompatible... Se mettre dans la peau d’un usager aide à voir le type d’erreur qu’il pourrait faire. On doit gérer les erreurs d'un programme avec les exceptions, même s'il est possible de le faire autrement.
Répondre aux exceptions
Lorsqu'une exception survient, l'application lève une exception. On peut ainsi exécuter une partie de code fonctionnel et détruirel'erreur.
Certaine ressources devraient toujours être protégées
- Les fichiers
- La mémoire
- Les ressources de Windows ou de Linux
- Les objets
try avec except
try instruction except on TypeException do begin instruction end; end;Le mot try débute le bloc d’exception, on inscrit les instructions voulues. Si durant le déroulement du programme une exception de type TypeException est levé, les instructions de ce bloc seront exécutées
try avec finally
Quoiqu'il arrive dans le déroulement du programme, le code contenu dans le bloc finally sera exécuté s'il y a une erreur ou nontry instruction finally instruction end;
var bit:tbitmap; begin try bit := tbitmap.Create; finally bit.free; end; end;
Librairie d'exécution
Lorsqu'on utilise les librairies d'exécution (rtl)comme les fonctions, les procédures de fichiers, les conversions..., les rtl reportent les erreurs à l'application sous la forme d'exception. Un message généré à l'usager lui sera affiché. On peut définir nos propres exceptions lorsqu'on fait appel à ce type de librairie.begin try Result:=Dividende div Diviseur; except on EDivByZero do begin result:=0; showMessage('Division par zéro impossible'); end; end; end;On pourrait arriver aux mêmes résultats en utilisant un if, mais l'utilisation des exceptions est beaucoup plus efficace.
Code source disponible ici.
Définir ses exceptions
Afin de sécuriser nos applications contre d'éventuelles erreurs, on peut créer nos propres exceptions afin de les prévenir. Les exceptions sont des objets, alors nous devons les déclarer comme un objet.type EMotInvalide = class(Exception);Après avoir déclaré notre exception, on peut l'appeler à tout moment. On doit employer le mot raise pour appeler l'exception.
if Mot == MotInvalide then raise EMotInvalide.create('Mot invalide');
Les exceptions silencieuses
Les applications de Delphi manipulent la plupart des exceptions que votre code ne manipule pas spécifiquement en affichant un message d'erreur. Il est possible d'arriver au même résultat en utilisant les exceptions dites silencieuses, qui n'afficheront pas de message d'erreur à l'usager. Ce type d'exception est particulièrement intéressante, lorsqu'un veut arrêter une partie d'un programme.Pour ce faire, on utilise la procédure Abort;
Aucun commentaire:
Enregistrer un commentaire