next up previous contents
Next: Evaluation du temps d'exécution Up: Éléments de programmation Previous: Outils de développement

Améliorer les performances d'un programme

Comment gérer les erreurs : lasterror/traperror permet de gérer les erreurs éventuelles.

La fonction traperror permet d'anticiper une erreur en récupérant le message d'erreur avant d'évaluer ses arguments. traperror retourne alors le message d'erreur qui correspond à la première erreur survenue pendant l'évaluation ou la simplification. A chaque appel de traperror la variable lasterror est ``mise à zéro''.

exemple 1
(1/3) mod 12; lasterror;
>      Error, the modular inverse does not exist

exemple 2
la fonction normal chargée d'écrire une expression rationnelle sous une forme simplifiée pose quelquefois des problèmes. Grace à traperror on peut contourner un problème après l'avoir identifié en suivant la démarche suivante:

        
> mynormal:=proc(a)
> local result;
> result:=traperror(normal(a));
> if result=lasterror then 
>    if result=`float not handle` then
>       result:=normal(convert(a,rational,exact));
>    else 
>       ERROR(result);
>    fi;
> else 
>    result;
> fi;
> end:
> 
> normal((2.1+5.6*x)/(2.8+8.4*x));
> mynormal((2.1+5.6*x)/(2.8+8.4*x));




Jean-Philippe Chancelier
Mon Nov 25 13:38:07 MET 1996