Delphi-Quellcode:
procedure FreeAndNil(var Obj);
begin
try
Obj.Free;
finally
Pointer(Obj) := nil;
end;
end;
und ja, try-finaly wäre für diese Prozedur angebracht.
try-except würde die
Exception abfangen und genau dieses soll nicht in dier Prozedur erfolgen.
was try-finally in etwa machen würde (als grobes Schema):
Delphi-Quellcode:
procedure FreeAndNil(
var Obj);
begin
ExceptionHandler.Installieren;
// if Exception then goto doExcept;
Obj.Free;
goto doFinally;
doExcept:
ExceptionHandler.StackWiederherstellen;
goto doFinally;
doFinally:
ExceptionHandler.Freigeben;
Pointer(Obj) :=
nil;
end;