Delphi-Quellcode:
function someFunc(): Boolean;
begin
try
try
Result := True; // 1
except
on EProgrammerNotFound do Result := False;
else
raise; // 2
end;
finally
// 3
end;
// 3
end;
(1)
Exception tritt auf, keine EProgrammerNotFound
Exception, daher re-raise (2),
Exception landet im Finally Block (3) wo nichts passiert. Und immer noch wurde kein Result gesetzt. Ohne try-finally fliegt er beim re-raise ja komplett aus der Funktion. Und das raisen einer Execption die eine Funktion beendet reicht Delphi als "Rückgabewert"
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."