Ich spieöle gerade etwas mit einer Funktion zur Berechnung der Fakultät rum:
Delphi-Quellcode:
function fakultaet(UpperLimit: Int64): Int64;
begin
if UpperLimit < 0 then
raise ERangeError.Create('Wert ausserhalb des Wertebereichs');
if (UpperLimit = 0) or (UpperLimit = 1) then
result := 1
else
result := fakultaet(UpperLimit - 1) * UpperLimit;
if result = High(Int64) then
raise ERangeError.Create('Wert ausserhalb des Wertebereichs');
end;
Wenn der Wert zur groß wird, wird leider ein Stacküberlauf ausgelöst. Für den Benutzer ist das aber eine eher unverständliche Fehlermeldung, deswegen wollte ich, wenn der Wertebereich überschritten wird eine ERangeError
Exception auslösen. Nur leider scheint da snicht zu funktionieren, weil ich die
Exception erst werfen, wenn das Kind schon in den Brunnen gefallen ist. Wie kann ich das lösen?