Based on your question, why not just use dynamic-wind in combination
with with-handlers? Just keep in mind that the post-thunk could be
called multiple times if there is a continuation jump into value-thunk,
so you should also wrap the whole thing with
call-with-continuation-barrier if it’s important that the post-thunk
only be executed once.


> On Jan 24, 2018, at 1:32 PM, Alexander McLin <>
> wrote:
> I have a with-handlers expression which handles several exceptions
> appropriately and raises user-error exceptions, I have some additional
> code I'd like to be executed after the exception have been handled,
> analogous to dyanmic-wind's post-thunk argument or like the finally
> clause of a conventional try{}catch{}finally{} structure found in
> other languages.
> Documentation has shown that with-handlers and its cousins don't seem
> to have anything like that so I thought I'd wrap my with-handlers
> expression in a call-with-exception-handler to intercept the raised
> user-error exceptions, do additional processing and returns the
> exception to continue its propagation. It's not working and the
> installed exception handler doesn't seem to be called at all.
> Here's simplified code.
> (call-with-exception-handler 
>    (lambda (e) 
> more work 
>      e) 
>     (with-handlers ([exn:a? (lambda (e) (raise-user-error "exception exn:a 
> caught"))] 
>                           [exn:b? (lambda (e) (raise-user-error "exception 
> exn:b caught"))]) 
>           ...code that may throw either exn:a or exn:b ))
> My expectation was that the lambda installed by the
> call-with-exception-handler would run after each user-error is raised.
> I do see the user-error exceptions' messages being printed in the
> terminal so they're being propagated all the way to the uncaught
> exception handler but no work is being done by my own lambda handler.
> What am I doing wrong? More to the point, is there a better way to do
> post with-handlers exception handling processing?
> My thinking is that I have a flawed understanding of the meaning of
> dynamic extent of with-handlers and call-with-exception-handler forms.

You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
For more options, visit

Reply via email to