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.