-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 27-Jan-07, at 1:36 PM, Phil Dawes wrote:
Hi Gambit List,
I'd like to have some functionality in gambit similar to 'finally' blocks in java/python where a block of code is always executed regardless of any exceptions thrown.
I'm currently using an exception handler that catches the exception and re-raises it after doing the cleanup stuff, but this loses the original 'where the exception was raised from' metadata.
I'm not sure I understand what you mean by that (i.e. 'where the exception was raised from' metadata).
When an exception is raised the continuation of the exception handler is identical to the continuation of the primitive that raised the exception. On the other hand, when you use with-exception-catcher or dynamic-wind, the continuation will be unwound, so you lose the continuation of the primitive. So, if you want to preserve this information, you could use call/cc (or ##continuation-capture) to save the information for later use.
Marc