* Exception handler installed when handling a continuable exception
@ 2021-08-09 7:26 Vivien Kraus via General Guile related discussions
0 siblings, 0 replies; 3+ messages in thread
From: Vivien Kraus via General Guile related discussions @ 2021-08-09 7:26 UTC (permalink / raw)
To: guile-user
Dear guile users,
When an exception is raised with #:continuable?, and when the handler
returns a value, then the program continues.
This is why this program prints "hello":
(use-modules (ice-9 exceptions))
(with-exception-handler
(lambda (exn)
;; We want to return "hello"
"hello\n")
(lambda ()
(format (current-error-port)
(raise-exception (make-exception-with-message "What should I say?")
#:continuable? #t))))
Now, in the handler, I may want to handle other kinds of exceptions:
(use-modules (ice-9 exceptions))
(with-exception-handler
(lambda (exn)
;; We want to return "hello"
(false-if-exception
;; Shouldn’t this error be ignored?
(error "messing around"))
"hello\n")
(lambda ()
(format (current-error-port)
(raise-exception (make-exception-with-message "What should I say?")
#:continuable? #t))))
Is this a bug?
Best regards,
Vivien
^ permalink raw reply [flat|nested] 3+ messages in thread
* Exception handler installed when handling a continuable exception
@ 2021-08-25 19:08 Maxime Devos
2021-09-30 21:39 ` Vivien Kraus via General Guile related discussions
0 siblings, 1 reply; 3+ messages in thread
From: Maxime Devos @ 2021-08-25 19:08 UTC (permalink / raw)
To: vivien, guile-user
[-- Attachment #1: Type: text/plain, Size: 354 bytes --]
Hi,
This also happens without #:continuable?.
Here's a simpler test case:
(with-exception-handler
(lambda (exn)
(catch #t
(lambda () (error "to be caught"))
(lambda e (pk 'caught! e))))
(lambda () (error "oops")))
---> In procedure raise-exceptiont: to be caught
I don't know if this is a bug.
Greetings,
Maxime.
[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 260 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Exception handler installed when handling a continuable exception
2021-08-25 19:08 Maxime Devos
@ 2021-09-30 21:39 ` Vivien Kraus via General Guile related discussions
0 siblings, 0 replies; 3+ messages in thread
From: Vivien Kraus via General Guile related discussions @ 2021-09-30 21:39 UTC (permalink / raw)
To: Maxime Devos, guile-user
Hello, I finally figured it out:
Le mercredi 25 août 2021 à 21:08 +0200, Maxime Devos a écrit :
> This also happens without #:continuable?.
> Here's a simpler test case:
>
> (with-exception-handler
> (lambda (exn)
> (catch #t
> (lambda () (error "to be caught"))
> (lambda e (pk 'caught! e))))
> (lambda () (error "oops")))
> ---> In procedure raise-exceptiont: to be caught
>
> I don't know if this is a bug.
It is not, it was in the documentation the whole time. The effective
handler is the outmost handler, unless #:unwind? is #t. I was tricked
by the obscure scheme jargon, but this works as expected:
(with-exception-handler
(lambda (exn)
(catch #t
(lambda () (error "to be caught"))
(lambda e (pk 'caught! e))))
(lambda () (error "oops"))
#:unwind? #t)
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-09-30 21:39 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-09 7:26 Exception handler installed when handling a continuable exception Vivien Kraus via General Guile related discussions
-- strict thread matches above, loose matches on Subject: below --
2021-08-25 19:08 Maxime Devos
2021-09-30 21:39 ` Vivien Kraus via General Guile related discussions
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).