Hallo,
in diesem Fall schließe ich mich
sirius und seiner Erklärung in Beitrag #2 an. Tritt innerhalb der Funktion eine
Exception auf, erfolgt (meistens) über FINALLY ein Sprung zur Fehlerbehandlung und
nicht zur Aufrufstelle. Der einzig mögliche Rückgabewert der Funktion kann also im gezeigten Beispiel (bei einem ordnungsgemäßen Ablauf) nur
True sein; eine Prozedur würde hier daher vollkommen ausreichen, weil das Funktionsergebnis konstant ist. Nur wenn die im Funktionsrumpf auftretende
Exception auch dort abgefangen wird, ist eine Funktion sinnvoll:
Delphi-Quellcode:
function abc: Boolean;
var
Obj: TObjectX;
begin
Result := False;
try
Obj := TObjectX.Create;
with Obj do
try
// ..
Result := True;
finally
Free;
end;
except
on E: ESpezielleException do
...
end;
end;
Bei dieser Vorgehensweise bleibt auch die Meldung des Compilers aus. Ob ein Abfangen der
Exception hier sinnvoll ist, und welche Exceptions dafür in Frage kommen, das liegt im Ermessen des Programmierers.
Gruß Hawkeye