Einzelnen Beitrag anzeigen

HeZa

Registriert seit: 4. Nov 2004
Ort: Dortmund
182 Beiträge
 
Delphi 10 Seattle Professional
 
#61

AW: Verständnisfrage zu Exit

  Alt 12. Okt 2020, 07:35
In vielen Fällen spricht erst mal ja nichts dagegen, aus einer Procedure eine Function zu machen.

Das Result := False; kann man nach hinten verschieben.

Delphi-Quellcode:
Function LeseJPGEin(DatnameMV:string):Boolean;
begin
  If not DateiVorhanden
    then exit(False);
  If not HeaderOK
    then exit(False);
  If not EndianOK
    then exit(False):
  Result := True;
  ....
Grade dein Procedurename/Funktionsname ist für ein Result geeignet. Laden des Jpeg hat funktioniert oder eben nicht.
Tut mie leid, gerade diese Routine schreit danach ein Prozedur zu sein die im Fehlerfall eine Exception wirft.

Denn wenn der Kunde anruft und sich beschwert, dass die JPEG-Datei xyz.jpg nicht geladen werden kann, will ich wissen wie es dazu kam: War die Datei vorhanden? War der Header Okay? War das Endian Okay? Zumal diese Funktion eh Exceptions werfen könnte, z.B. weil der Dateipfad falsch ist, die Datei gesperrt ist, das Netzlaufwerk zum Pfad nicht gemountet ist. Und auch weil die Datei nicht vorhanden ist, weil DateiVorhanden eine RaceCondition darstellt.

Wenn es Interessante Gründe gibt warum eine Methode Fehlschlägt sollte man diese nicht hinter einem Boolean Result verstecken. Davon sollte nur abgewichen werden, wenn jemand "beweist", dass das für die Anwendung ein Performance-Problem darstellt. Dann könnte ich mich evtl. mit der hässlichen alternative function LeseJPGEin(DatnameMV:string; var FehlerMeldung: string):Boolean; anfreunden.

Ciao HeZa
  Mit Zitat antworten Zitat