Hello, I finally figured it out:

Le mercredi 25 août 2021 à 21:08 +0200, Maxime Devos a écrit :
> This also happens without #:continuable?.
> Here's a simpler test case:
> 
> (with-exception-handler
>   (lambda (exn)
>     (catch #t
>       (lambda () (error "to be caught"))
>       (lambda e (pk 'caught! e))))
>   (lambda () (error "oops")))
> ---> In procedure raise-exceptiont: to be caught
> 
> I don't know if this is a bug.
It is not, it was in the documentation the whole time. The effective
handler is the outmost handler, unless #:unwind? is #t. I was tricked
by the obscure scheme jargon, but this works as expected:

(with-exception-handler
  (lambda (exn)
    (catch #t
      (lambda () (error "to be caught"))
      (lambda e (pk 'caught! e))))
  (lambda () (error "oops"))
  #:unwind? #t)


Reply via email to