Uitvoeringsfouten en 'ERROR

Het is voor de gebruiker (en voor uzelf) best zo accuraat mogelijke informatie te krijgen wanneer er iets misloopt in een procedure. Hiervoor kan de functie 'ERROR' gebruikt worden. Het uitvoeren ervan heeft effect dat de gebruiker een boodschap krijgt en de uitvoering van de procedure stopt. Dit wordt geillustreerd voor een eenvoudige implementatie van de Newton-Raphson methode voor het zoeken van nulpunten. De methode is iteratief en de convergentie is niet a-priori zeker, zodat het veiliger is een maximum aantal iteraties 'maxiter' te specificeren. Wordt dit aantal overschreden, dan stopt de procedure met een foutmelding.

> NewtonRaphson := proc(f::algebraic,x0::realcons,s::realcons)
local xx0, m, n, d, maxiter;
n := 0;
maxiter := 30;
m := x0;
xx0 := m - f(m)/D(f)(m);
while (abs(m - xx0) > s) do
m := xx0;
xx0 := m - f(m)/D(f)(m);
n := n + 1;
if (n > maxiter) then
ERROR(`meer dan `.maxiter.` iteraties`);
fi;
od;
m, n
end:

> f := x -> exp(-x) - 1e-9;

[Maple Math]

> NewtonRaphson(f,-10.0,1e-9);

Error, (in NewtonRaphson) meer dan 30 iteraties

> NewtonRaphson := 'NewtonRaphson': f := 'f':