Hintergrund: Wenn einer der beiden constructoren fehlschlägt, wird in jedem Fall mit Free wieder richtig aufgeräumt, weil Free auf "nil" prüft, und somit auch keine
Exception wirft, wenn eine der beiden Instanzen nil ist.
Die Absicht ist richtig (Konstruktor
vor dem try..finally-Block), die Begründung aber nicht
Wenn im Konstruktor eine
Exception auftritt
- Wird der Destruktor ausgeführt
- Und die
Exception anschließend weiter geworfen
- In den try..finally-Block kommt man somit erst gar nicht.
(Deshalb ist
Free()
sogar eigentlich unnötig da im try..finally-Block die Referenz niemals
nil
sein
kann, ein
Destroy()
reicht völlig)