On 2013-03-31, at 3:02 PM, Mikael mikael.rcv@gmail.com wrote:
Dear Marc,
(with-exception-handler (lambda (e) (print "Outer.\n") 'outer-handler-result) (lambda () (with-exception-handler (lambda (e) (print "Inner.\n") (let ((r (raise e))) (print "Passing on " r ".\n") r)) (lambda () (list 'raise-returned: (raise 'err))))))
prints out "Inner.\n" in an infinite loop currently. Is it not supposed to output
Inner. Outer. Passing on outer-handled-result.
and then return '(raise-returned: outer-handler-result) ?
That's the correct behavior. Don't confuse with-exception-catcher (which corresponds to try/catch in other programming languages) and with-exception-handler (which installs an exception handler which will be active when the exception handler is called).
Marc