Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#61

AW: "FinalllyExit" gewünscht

  Alt 20. Mai 2011, 07:42
Zitat:
versuchsweise ausführen
Logiksteuerung via Exceptions ist in der Regel eh verpöhnt.

Try-Finally/Except ist für den "Notfall" ... Exception = Ausnahme

Ein Konstruktor sollte doch niemals eine Exception werfen. Und wenn, braucht man das Objekt nicht freizugeben, weil die Konstruktorlogik den Speicher selbst wieder freigibt, bevor sie die Exception erneut schmeisst.
Das stimmt schon, aber
Delphi-Quellcode:
A := TA.Create;
B := TB.Create;
try
Knallt es hier im B, dann gibt sich B selber wieder frei .... nur um das A kümmert sich keiner mehr.

PS: Ja, beim Erstellen und wärend der Bearbeitung sind A und B hier abgesichert, aber
Delphi-Quellcode:
finally
  A.Free;
  B.Free;
end;
Knallt es jetzt im A.Free, dann wird B nicht freigegeben.
Der einzige Grund, warum diese Vereinfachung "oft" Funktional ist, liegt darin begründet, daß das Free oftmals "weniger" Probleme bereitet.
Ist das nicht sichergestellt, dann kommt man um verschachtelte Try-Finally nicht drumrum.
Es sei denn man weiß, daß z.B. A.Free (nahezu) niemals Exceptions werfen kann, dann ist auch B.Free mit großer Sicherheit noch geschützt.

Ich selber nutze eine derartige Kombination vorallem dann, wenn ich eben weiß, daß A.Free problemlos abläuft und für den Fall, daß es da doch mal knallt, dann ist der Programmablauf eh dermaßen gestört, daß das Programm beendet werden muß und sich keine weitere Absicherung mehr lohnt.

Und ja, an Stellen wo sich keine Fehlerbehandlung "lohnt", weil dann eh nix mehr geht, dann erspare ich mir auch schonmal eine Exceptionbehandlung, wie Try-Finally und selbst Speicherfreigaben werden schonmal einfach weggelassen. (weil dadurch der Programmcode schonmal übersichtlicher/kürzer werden kann, ohne das es probleme gibt, da ich weiß das sich Windows am Programmende auch um vieles nochmal kümmert ... das war vor der NT-Reihe noch wesentlich aufwändiger/wichtiger)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (20. Mai 2011 um 07:47 Uhr)
  Mit Zitat antworten Zitat