* bug#60799: Bogus 'Error while printing exception' message when raising srfi-35 exception
@ 2023-01-14 1:30 Maxim Cournoyer
2023-01-14 7:25 ` Ricardo Wurmus
0 siblings, 1 reply; 3+ messages in thread
From: Maxim Cournoyer @ 2023-01-14 1:30 UTC (permalink / raw)
To: 60799
Hello Guile,
When raising a srfi-35 defined exception type like in the following, a
generic (and unhelpful) "Error while printing exception" message is
shown, with not even the exception type mentioned:
--8<---------------cut here---------------start------------->8---
(use-modules (srfi srfi-35))
(define-condition-type &platform-not-found-error &error
platform-not-found-error?)
(raise-exception &platform-not-found-error)
--8<---------------cut here---------------end--------------->8---
Produces:
--8<---------------cut here---------------start------------->8---
Backtrace:
In ice-9/boot-9.scm:
1752:10 5 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
4 (apply-smob/0 #<thunk 7f236157a2e0>)
In ice-9/boot-9.scm:
724:2 3 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
619:8 2 (_ #(#(#<directory (guile-user) 7f2361580c80>)))
In ice-9/boot-9.scm:
2836:4 1 (save-module-excursion _)
4388:12 0 (_)
ice-9/boot-9.scm:4388:12: Error while printing exception.
--8<---------------cut here---------------end--------------->8---
This is probably not by design, right?
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#60799: Bogus 'Error while printing exception' message when raising srfi-35 exception
2023-01-14 1:30 bug#60799: Bogus 'Error while printing exception' message when raising srfi-35 exception Maxim Cournoyer
@ 2023-01-14 7:25 ` Ricardo Wurmus
2023-01-14 14:52 ` Maxim Cournoyer
0 siblings, 1 reply; 3+ messages in thread
From: Ricardo Wurmus @ 2023-01-14 7:25 UTC (permalink / raw)
To: Maxim Cournoyer; +Cc: 60799
Hi Maxim,
> When raising a srfi-35 defined exception type like in the following, a
> generic (and unhelpful) "Error while printing exception" message is
> shown, with not even the exception type mentioned:
>
> (use-modules (srfi srfi-35))
>
> (define-condition-type &platform-not-found-error &error
> platform-not-found-error?)
>
> (raise-exception &platform-not-found-error)
>
>
> Produces:
>
> Backtrace:
> In ice-9/boot-9.scm:
> 1752:10 5 (with-exception-handler _ _ #:unwind? _ # _)
> In unknown file:
> 4 (apply-smob/0 #<thunk 7f236157a2e0>)
> In ice-9/boot-9.scm:
> 724:2 3 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
> In ice-9/eval.scm:
> 619:8 2 (_ #(#(#<directory (guile-user) 7f2361580c80>)))
> In ice-9/boot-9.scm:
> 2836:4 1 (save-module-excursion _)
> 4388:12 0 (_)
>
> ice-9/boot-9.scm:4388:12: Error while printing exception.
>
> This is probably not by design, right?
Perhaps not, but conditions are expected to be raised with “raise”:
--8<---------------cut here---------------start------------->8---
(use-modules (srfi srfi-34) (srfi srfi-35))
(define-condition-type &platform-not-found-error &error
platform-not-found-error?)
(raise (condition (&platform-not-found-error)))
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
ERROR:
1. &platform-not-found-error
--8<---------------cut here---------------end--------------->8---
--
Ricardo
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#60799: Bogus 'Error while printing exception' message when raising srfi-35 exception
2023-01-14 7:25 ` Ricardo Wurmus
@ 2023-01-14 14:52 ` Maxim Cournoyer
0 siblings, 0 replies; 3+ messages in thread
From: Maxim Cournoyer @ 2023-01-14 14:52 UTC (permalink / raw)
To: Ricardo Wurmus; +Cc: 60799-done
Hello Ricardo,
Ricardo Wurmus <rekado@elephly.net> writes:
> Hi Maxim,
>
>> When raising a srfi-35 defined exception type like in the following, a
>> generic (and unhelpful) "Error while printing exception" message is
>> shown, with not even the exception type mentioned:
>>
>> (use-modules (srfi srfi-35))
>>
>> (define-condition-type &platform-not-found-error &error
>> platform-not-found-error?)
>>
>> (raise-exception &platform-not-found-error)
>>
>>
>> Produces:
>>
>> Backtrace:
>> In ice-9/boot-9.scm:
>> 1752:10 5 (with-exception-handler _ _ #:unwind? _ # _)
>> In unknown file:
>> 4 (apply-smob/0 #<thunk 7f236157a2e0>)
>> In ice-9/boot-9.scm:
>> 724:2 3 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
>> In ice-9/eval.scm:
>> 619:8 2 (_ #(#(#<directory (guile-user) 7f2361580c80>)))
>> In ice-9/boot-9.scm:
>> 2836:4 1 (save-module-excursion _)
>> 4388:12 0 (_)
>>
>> ice-9/boot-9.scm:4388:12: Error while printing exception.
>>
>> This is probably not by design, right?
>
> Perhaps not, but conditions are expected to be raised with “raise”:
>
> (use-modules (srfi srfi-34) (srfi srfi-35))
>
> (define-condition-type &platform-not-found-error &error
> platform-not-found-error?)
>
> (raise (condition (&platform-not-found-error)))
> ice-9/boot-9.scm:1685:16: In procedure raise-exception:
> ERROR:
> 1. &platform-not-found-error
Thanks for pointing that. The above with 'raise' doesn't produce the
same output for my Guile 3.0.8:
--8<---------------cut here---------------start------------->8---
(use-modules (srfi srfi-35))
(define-condition-type &platform-not-found-error &error
platform-not-found-error?)
(raise (condition (&platform-not-found-error)))
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Wrong type (expecting exact integer): #<&platform-not-found-error>
--8<---------------cut here---------------end--------------->8---
Using 'raise-exception' instead of 'raise' fixes it for me:
--8<---------------cut here---------------start------------->8---
(raise-exception (condition (&platform-not-found-error)))
ice-9/boot-9.scm:1685:16: In procedure raise-exception:
ERROR:
1. &platform-not-found-error
Entering a new prompt. Type `,bt' for a backtrace or `,q' to continue.
--8<---------------cut here---------------end--------------->8---
So my initial issue was attempting to raise on a type rather than an
object (which works both ways in other languages such as Python).
If I also import srfi-34, then it works as expected:
--8<---------------cut here---------------start------------->8---
(use-modules (srfi srfi-34) (srfi srfi-35))
(define-condition-type &platform-not-found-error &error
platform-not-found-error?)
(raise (condition (&platform-not-found-error)))
--8<---------------cut here---------------end--------------->8---
So my original confusing was that there exists a 'raise' procedure in
Guile, which has nothing to do with exceptions (it's used to send a
signal to the current process).
What I'll take from this is to use exclusively 'raise-exception', which
is not subject to the above srfi-34 vs builtin raise confusion.
Closing, thanks for helping me untangle things!
--
Thanks,
Maxim
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-01-14 14:52 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-14 1:30 bug#60799: Bogus 'Error while printing exception' message when raising srfi-35 exception Maxim Cournoyer
2023-01-14 7:25 ` Ricardo Wurmus
2023-01-14 14:52 ` Maxim Cournoyer
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).