Spätestens, wenn Create und Free in unterschiedlichen Prozeduren stehen (müssen), ist
try ... finally natürlich nicht mehr möglich. In diesem Fall kann man, falls das Programm trotz eines eventuellen Fehlers fortgesetzt werden soll, eine Statusvariable mitführen.
Eine mögliche Sitation ist z.B. eine Log-Datei, die ins Programmverzeichnis geschrieben wird, falls möglich. Wird das Programm dagegen von einem Read-Only-Verzeichnis oder von CD gestartet, entfällt das Log.
Wo möglich, sollte man jedoch schon mit
try ... finally kapseln. Eine erhebliche Fehlerquelle ist damit ausgeschaltet. Vor allem zum Vermeiden von Speicherlecks bei permanent laufenden Hintergrundprogrammen oder Serveranwendungen ist das lebenswichtig.