Thema: Delphi Finally: Welcher Sinn?

Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.113 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Finally: Welcher Sinn?

  Alt 10. Apr 2005, 23:03
Moin Keex,

try/finally und try/except haben eigentlich nicht viel miteinander zu tun.

try/finally ist der sogenannte Resourcenschutzblock, der sicherstellen soll, dass belegte Resourcen garantiert wieder freigegeben werden, da, wie malo ja schon sagte, der finally-Abschnitt immer ausgeführt wird.

Delphi-Quellcode:
// Allgemein:

<Resource belegen>
try
  <Mit der Resource arbeiten>
finally
  <Resource freigeben>
end;

// z.B. Objekte
sl := TStringList.Create;
try
  sl.LoadFromFile(...);
  // ...
finally
  FreeAndNil(sl);
end;

// aber auch Handle
hFile := CreateFile(....);
try
  // Mach was mit der geöffnete Datei
finally
  CloseFile(hFile);
end;
Ein Resourcenschutzblock lässt sich auch in "grösserem Stile" finden.
Die Kombination aus Create/Destroy (Beispiel: Wird ein Fenster erzeugt, Resourcen belegen, die erst wieder freigegeben werden wenn das Fenster wieder freigegeben wird), oder auch initialization/finalization (innerhalb einer Unit).

try/except wird man nur verwenden, wenn man damit rechnen muss, dass in einem bestimmten Abschnitt eine Exception auftritt, und auf diese selber reagieren will (oder muss )
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat