Thema: Delphi Exceptions schachteln

Einzelnen Beitrag anzeigen

choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: Exceptions schachteln

  Alt 13. Jan 2004, 11:44
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...
gruß, choose
  Mit Zitat antworten Zitat