Thanks to the ever helpful Matthew Flatt, I can now catch scheme errors before they cause an exception and stop everything running. It’s also possible to detect that an error has occurred and do something else (play a suitable sample, electrify the keyboard…)
(define error-happened #f)
(define (my-error-handler n)
(set! error-happened #t))
(with-handlers ([(lambda (x) #t) my-error-handler])
(modulo 0 1 2)) ; some erroneous code
(when (error-happened)
(open-trapdoor))
Leave a Reply