catch-8sync catch-%8sync
+ ;; used for introspecting the error, but a method for making
+ ;; is not exposed
+ wrapped-exception?
+ wrapped-exception-key wrapped-exception-args
+ wrapped-exception-stacks
+
print-error-and-continue
%current-agenda
(define-syntax-rule (propagate-%async-exceptions body)
(let ((body-result body))
(if (wrapped-exception? body-result)
- (throw '%8sync-caught-error
+ (throw '8sync-caught-error
(wrapped-exception-key body-result)
(wrapped-exception-args body-result)
(wrapped-exception-stacks body-result))
;; If something bad happened and we didn't catch it,
;; we'll wrap it up in such a way that the continuation
;; can address it
- ;; @@: For this stack to work doesn't it have to be
(lambda (key . args)
(cond
- ((eq? key '%8sync-caught-error)
+ ((eq? key '8sync-caught-error)
(match args
((orig-key orig-args orig-stacks)
(make-wrapped-exception
body ...)))))
(define-syntax-rule (catch-8sync exp (handler-key handler) ...)
- (catch '%8sync-caught-error
+ (catch '8sync-caught-error
(lambda ()
exp)
(lambda (_ orig-key orig-args orig-stacks)
((or (eq? handler-key #t)
(eq? orig-key handler-key))
(apply handler orig-stacks orig-args)) ...
- (else (raise '%8sync-caught-error
+ (else (raise '8sync-caught-error
orig-key orig-args orig-stacks))))))
;; Alias...?