Wenn ich Klassen erstelle, dann wird im
constructor
als Erstes die Gültigkeit der Argumente geprüft.
Delphi-Quellcode:
constructor TFoo.Create( ABar : TBar );
begin
// Guard-Section
if not Assigned( Bar ) then
raise EArgumentNilException.Create( 'ABar' );
inherited Create;
FBar := ABar;
FSomething := TSomething.Create;
end;
destructor TFoo.Destroy;
begin
FSomething.Free;
inherited;
end;
Wird jetzt eine Instanz erzeugt, dann ja nach diesem Pattern:
Delphi-Quellcode:
LFoo := TFoo.Create(
nil );
// Bei einer Exception ist hier schon Ende
try
// mit LFoo arbeiten
finally
LFoo.Free;
end;
In einer Schleife
Delphi-Quellcode:
LList := TObjectList.Create;
try
while LList.Count < 1000
do
begin
LList.Add( TFoo.Create(
nil ) );
// Bei einer Exception ist hier schon Ende
end;
// mit LList arbeiten
finally
LList.Free;
// aber das hier wird auch noch abgearbeitet
end;
Also immer alles sauber
@bernau
Mit diesem Konzept wünsche ich viel Glück bei der Fehlersuche ... denn das wirst du brauchen
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)