Object1 := nil;
Object2 := nil;
try
Object1 := TMyObject.Create;
Object2 := TMyObject.Create;
finally
Object1.Free;
Object2.Free;
end;
If you do not initialize the objects with nil
outside the try-finally
block, if one of them fails to be created an AV will occur on the finally block, because the object won't be nil (as it wasn't initialized) and will cause an exception.
The Free
method checks if the object is nil, so initializing both objects with nil
avoids errors when freeing them if they weren't created.