Wenn in deiner Methode (TueDies, TueDas) eine
Exception ausgelöst wird und diese dort auch in einem
Exception-Block behandelt wird, dann gilt die
Exception als erledigt und das Prrogramm läuft nach dem
Exception-Block normal weiter - also auch in der aufrufenden Methode. Soweit hast du schon recht.
Du kannst aber als letzten Befehl in der
Exception-Behandlung von TueDies und TueDas auch einfach ein
raise
aufrufen, dann wird die gerade behandelte
Exception nochmal ausgelöst und der nächsthöhere except-Block ist mit der Behandlung dran. Dies ist die gängige Methode lokal auf eine
Exception zu reagieren und trotzdem die
Exception weiter nach oben zu leiten.
Auf keinen Fall aber solltest du einen unkonditionierten
except
-Block verwenden, der alle Exceptions abfängt. Bei Exceptions wie
EOutOfMemory
oder
EApocalypse
sollte man vielleicht etwas anders reagieren als bei einer
EConvertError
-
Exception.
Dinge, die immer ausgeführt werden sollen - unabhängig davon ob eine
Exception aufgetreten ist oder nicht - gehören (wie schon mehrfach erwähnt) in einen
finally
-Block.