[Python-Dev] Revert #12085 fix for del attribute error message (original) (raw)
Antoine Pitrou solipsis at pitrou.net
Mon Sep 23 23:35:07 CEST 2013
- Previous message: [Python-Dev] Revert #12085 fix for __del__ attribute error message
- Next message: [Python-Dev] Revert #12085 fix for __del__ attribute error message
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Tue, 24 Sep 2013 07:19:14 +1000 Nick Coghlan <ncoghlan at gmail.com> wrote:
On 24 Sep 2013 01:24, "Antoine Pitrou" <solipsis at pitrou.net> wrote: > > On Mon, 23 Sep 2013 18:51:04 +1000 > Nick Coghlan <ncoghlan at gmail.com> wrote: > > On 23 September 2013 18:45, Antoine Pitrou <solipsis at pitrou.net> wrote: > > > Le Mon, 23 Sep 2013 18:17:51 +1000, > > > Nick Coghlan <ncoghlan at gmail.com> a écrit : > > >> > > >> Here's what I suggest changing that error to: > > >> > > >> >>> del x > > >> Unraisable exception suppressed when calling > >> of <_main_.C object at 0x7f98b8b61538>> > > >> Traceback (most recent call last): > > >> File "", line 3, in del > > >> RuntimeError: Going away now > > > > > > Why not simply "Exception automatically caught in > > C.del> [...]" ? > > > > It only answers the "what" (i.e. the exception was automatically > > caught), without addressing the "why" (i.e. because there wasn't > > anything else useful the interpreter could do with it) > > Yes, but I agree with Greg that "unraisable" is wrong. After all, it > was raised, and it can even be caught by the programmer (inside > del).
The word doesn't literally mean the exception itself was unraisable. It means it was raised, we caught it and we're writing it to stderr because we can't raise it again.
But that's because you already know what it's supposed to convey. The average user doesn't, and only sees "unraisable".
The relevant C API function is just called "PyErrWriteUnraisable", not "PyErrWriteUnraisableButThatIsTechnicallyWrongSinceItWasAlreadyRaisedAndWeJustCaughtItAndAreNowReportingItToStdErr".
"PyErr_WriteUnraisable" is right at the point where it used: I can't raise that exception at this point, therefore I call PyErr_WriteUnraisable. However, from the point of view of the user reading the traceback, the exception was raised.
Regards
Antoine.
- Previous message: [Python-Dev] Revert #12085 fix for __del__ attribute error message
- Next message: [Python-Dev] Revert #12085 fix for __del__ attribute error message
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]