Ich denke das kommt ganz auf den Fall an und kann nicht so allgemein definiert werden.
Grundsätzlich muss man sich überlegen wozu die Before- und After-Events überhaupt benötigt werden. Aber ich denke dass man in der Regel im After-Event Resourcen aufräumen möchte, die man in Before-Event alloziert hat. Dann ist der try-finally-Block schon nötig.
Die Frage ist ob man nicht noch zusätzlich einen Error-Event einbauen möchte. Vor allem wenn die Events von einem eigenen Thread heraus aufgerufen werden.
Man könnte sich auch überlegen eine allfällige
Exception dem After-Event als Parameter mitzuliefern (nil falls kein Fehler), dann kann der Benutzer im Event-Handler selber entscheiden was er nun tun sollte.