AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zwei Objekte in einem oder zwei Try Finaly Blöcke?
Thema durchsuchen
Ansicht
Themen-Optionen

Zwei Objekte in einem oder zwei Try Finaly Blöcke?

Ein Thema von Popov · begonnen am 15. Apr 2015 · letzter Beitrag vom 15. Apr 2015
 
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.753 Beiträge
 
Delphi 12 Athens
 
#31

AW: Zwei Objekte in einem oder zwei Try Finaly Blöcke?

  Alt 15. Apr 2015, 15:18
Wenn Du als Nutzer obiges Programm ausführst und B.Create knallt - warum auch immer - wirst Du mit dem Programm nicht glücklich werden.
Ob da noch Speicher allociert ist oder nicht, wäre da nebensächlich.

Du erfährst als Nutzer nicht, dass die Überweisung nicht funktioniert hat.
Ok, es wird kein Speicher verschwendet aber das ist doch sowas von egal.

Besser wäre, wenn es eine Fehlermeldung gibt. Entweder eine Schutzverletzung oder eine nette Erklärung wie "Die Überweisung konnte nicht durchgeführt werden!".
In jedem Fall muss die Software gefixt (oder einer neue Version verkauft ) werden.
Natürlich sollte man einen Fehler bei der Überweisung abfangen und entsprechend reagieren. Es könnte ja ganz einfach sein, daß das Konto nicht gedeckt ist. Dann hilft auch eine neue Programmversion nicht weiter, da die Software ja nicht die Ursache des Fehlers ist.

Es könnte aber sein, daß TMyClass irgendwelche Resourcen anfordert (z.B. eine Verbindung zum Bankrechner), die es im Destruktor wieder freigibt. Dann sollte das finally aber ganz sicher durchlaufen werden. Es ist dabei sogar möglich, daß im Destroy eine Exception geworfen wird, die darauf hinweist, daß z.B. diese Verbindung nicht sauber geschlossen werden konnte. Also können auch Aufrufe wie B.Free noch eine Exception werfen. Nicht immer hat man auch die Kontrolle über diese Klassen, wenn die z.B. aus einer Bibliothek kommen.

Ich würde mich also in keinem Fall darauf verlassen, daß ein Create oder Destroy schon keine Exception auslöst.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz