Peter Bex wrote:
Yup, thanks for asking him.  It still sucks, though ;)

This is yet another solution, in case you can't (or don't want to) steal the exception handler from the primordial thread. This one may be safer. But then again, I'm probably missing Marc Feeley's point completely, so it might not be safe to use at all :-)

#;1> (use srfi-18)
; loading library srfi-18 ...
#;2> (define (exception-protect thunk)
--->   (define exn-message (condition-property-accessor 'exn 'message))
--->   (lambda ()
--->     (call-with-current-continuation
--->       (lambda (quit)
--->         (with-exception-handler
--->           (lambda (exn)
--->             (print "Error: " (exn-message exn))
--->             (quit))
--->           thunk)))))
#;3> (define (test)
--->   (dynamic-wind
--->     (lambda ()
--->       (print "BEFORE"))
--->     (lambda ()
--->       (error "die!")
--->       (print "OH NOES"))
--->     (lambda ()
--->       (print "AFTER"))))
#;4> (thread-join! (thread-start! (exception-protect test)))
BEFORE
Error: die!
AFTER
#;5>

Tobia


_______________________________________________
Chicken-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to