[gambit-list] (updated cj-exception handling routines)
Christian Jaeger
christian at pflanze.mine.nu
Mon May 19 14:20:49 EDT 2008
Since I've been asked about getting location information about
exceptions happening in threads, and I still haven't gotten around
updating all of my code to current Gambit, I've now adapted cj-exception
and put it here:
http://scheme.mine.nu/gambit/preview/cj-exception.scm
> (with-ec-catcher (lambda() (/ 1 0) 43))
*** ERROR IN (console)@1.1 -- This object was raised:
#<exception/continuation #2 exception: #<divide-by-zero-exception #3>
continuation: #<continuation #4>>
1>
ctl-d
> (exception/continuation-message-in-context #2)
"*** ERROR IN #<procedure #5>, (console)@2.28 -- Divide by zero\n(/ 1 0)\n"
> (display (exception/continuation-contextlines #2))
0 #<procedure #5> (console)@2:28 (/ 1 0)
1 (interaction) (console)@2:1 (with-ec-catcher
(lambda ...
2 ##main
Same thing when used like:
> (define spawn (lambda (thunk) (thread-start! (make-thread (lambda ()
(with-ec-catcher thunk))))))
> (spawn (lambda() (/ 1 0) 43))
#<thread #6>
> (thread-join! #6)
*** ERROR IN (console)@6.1 -- Uncaught exception:
#<exception/continuation #7 exception: #<divide-by-zero-exception #8>
continuation: #<continuation #9>>
(thread-join! '#<thread #6>)
1>
Christian.
More information about the Gambit-list
mailing list