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''.
(1/3) mod 12; lasterror; > Error, the modular inverse does not exist
> 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));