I have a little model of a server below. The server handles all exceptions, and restarts itself after some errors. It also handles break?, to actually exit when requested.
While this server is running, if I press Ctrl+C before `(error 'foo)` is handled, the server exits correctly with 120. However, if I press Ctrl+C after `(error 'foo)` is handled, the `exn:break?` handler is never called, the server no longer responds to `Ctrl+C`, and (in this example) it eventually exits with status `1`. I cannot figure out why. As far as I can tell, this should always handle `Ctrl+C` by exiting with 120. > #lang racket/base > > (let loop ([n 0]) > (with-handlers ([exn:break? (lambda _ (exit 120))] > [void > (lambda (exn) > (printf "handled error: ~a~n" (exn-message exn)) > (loop (add1 n)))]) > (displayln n) > (sleep 1) > (cond > [(zero? n) (error 'foo)] > [(= n 5) (exit 1)]) > (loop (add1 n)))) -- William J. Bowman -- 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 to racket-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/YV%2BSWNpldfOB5tA3%40williamjbowman.com.