Hallo Hansa,
generell solltest Du Exceptions nicht für den Programmfluss einsetzen, wenn es auch anders geht. Konstrukte der Art
Delphi-Quellcode:
try
Result:= APositivInt div AnotherPositivInt;
except
on EDivideByZero do
Result:= IntInifinity;
end;
sind aus verschiedenen Gründen gegenüber der Lösung
Delphi-Quellcode:
if AnotherPositivInt=0 then
Result:= IntInifinity
else
Result:= APositivInt div AnotherPositivInt;
zu verwerfen!
Falls Du also die Möglichkeit hast, die Gültigkeit des Passworts auch ohne eine potenzielle
Exception zu überprüfen, solltest Du etwas der in Art
Delphi-Quellcode:
if not ValidPassword(myPassword) then
repeat
myPassword:= AlertInvalidAndReEnterPassword;
until ValidPassord(myPassord);
vorziehen.
Sollten Exceptions unumgänglich sein, könntest Du es mit etwas der Art
Delphi-Quellcode:
myValidPassword:= False;
repeat
try
TryToUsePassword(myPassword);
myValidPassword:= True;
except
on EInvalidPassword do
myPassword:= AlertInvalidAndReEnterPassword;
end;
until bValidPassword;
versuchen.
Versuche nicht, im
except-Block alle Exceptions abzufangen. Bei einer solchen Lösung könntest Du bei dieser Form von Schleifen und unbedachten Fehlern, die zB bei der Darstellung auftreten, ungewollt Endlosschleifen produzieren.
Darüber hinaus solltest Du eine Lösung finden, mit der ein Benutzer die Schleife beenden kann, falls er sein Passwort vergessen hat...