Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
Delphi 10 Seattle Enterprise
|
AW: Objekt auf Übergabe prüfen.
20. Jan 2014, 15:19
So wäre es komplett richtig in diesem Kontext
Delphi-Quellcode:
function Test(sl: TStringList; Index: Integer): TObject;
begin
// Ist Index OutOfRange wird eine Exception geworfen
// gut so, denn dann ist bei diesem Befehl Schluss
Result := sl.Objects[ Index];
// Hier liegt eine mögliche Fehlerquelle, und darum schmeissen wir eine Exception, wenn das nicht passt
if sl.OwnsObjects and Assigned( Result ) then
raise Exception.Create( ' Das kann ich nicht bei einer TStringList mit OwnsObjects!' );
sl.Delete( Index);
// Wenn bei der Rückgabe zwingend eine Instanz gefordert ist, dann kann hier nochmals eine Exception geworfen werden
Assert( Assigned( Result ) );
// Oder eben
if not Assigned( Result ) then
raise Exception.Create( ' Es wird keine Instanz zurückgeliefert, obwohl das so sein muss!' );
end;
Bei der Verwendung
Delphi-Quellcode:
procedure foo;
var
LObj : TObject;
begin
LObj := Test( MyStringList, 10 );
// wenn eine Exception beim Aufruf von Test auftritt, dann wird das hier drunter auch nicht mehr ausgeführt
try
// Hier irgendwas mit LObj machen
finally
LObj.Free;
end;
end;
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)
|
|
Zitat
|