emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#60799: closed (Bogus 'Error while printing exception' message when r


From: GNU bug Tracking System
Subject: bug#60799: closed (Bogus 'Error while printing exception' message when raising srfi-35 exception)
Date: Sat, 14 Jan 2023 14:54:01 +0000

Your message dated Sat, 14 Jan 2023 09:52:55 -0500
with message-id <87a62ldv7c.fsf@gmail.com>
and subject line Re: bug#60799: Bogus 'Error while printing exception' message 
when raising srfi-35 exception
has caused the debbugs.gnu.org bug report #60799,
regarding Bogus 'Error while printing exception' message when raising srfi-35 
exception
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
60799: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=60799
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- Begin Message --- Subject: Bogus 'Error while printing exception' message when raising srfi-35 exception Date: Fri, 13 Jan 2023 20:30:44 -0500
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



--- End Message ---
--- Begin Message --- Subject: Re: bug#60799: Bogus 'Error while printing exception' message when raising srfi-35 exception Date: Sat, 14 Jan 2023 09:52:55 -0500 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
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


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]