Hmm, if all paths lead to <code>cleanup()</code> why not just call it once at the end?  Exceptions to be raised can always be instantiated and stored in a variable, then raised later (just a suggestion).