[Python-Dev] Revert #12085 fix for __del__ attribute error message

MRAB python at mrabarnett.plus.com
Tue Sep 24 01:04:28 CEST 2013


On 23/09/2013 22:19, Nick Coghlan wrote:
>
> On 24 Sep 2013 01:24, "Antoine Pitrou" <solipsis at pitrou.net
> <mailto:solipsis at pitrou.net>> wrote:
>  >
>  > On Mon, 23 Sep 2013 18:51:04 +1000
>  > Nick Coghlan <ncoghlan at gmail.com <mailto:ncoghlan at gmail.com>> wrote:
>  > > On 23 September 2013 18:45, Antoine Pitrou <solipsis at pitrou.net
> <mailto:solipsis at pitrou.net>> wrote:
>  > > > Le Mon, 23 Sep 2013 18:17:51 +1000,
>  > > > Nick Coghlan <ncoghlan at gmail.com <mailto:ncoghlan at gmail.com>> a
> écrit :
>  > > >>
>  > > >> Here's what I suggest changing that error to:
>  > > >>
>  > > >> >>> del x
>  > > >> Unraisable exception suppressed when calling <bound method C.__del__
>  > > >> of <__main__.C object at 0x7f98b8b61538>>
>  > > >> Traceback (most recent call last):
>  > > >>   File "<stdin>", line 3, in __del__
>  > > >> RuntimeError: Going away now
>  > > >
>  > > > Why not simply "Exception automatically caught in <bound method
>  > > > 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*.
>
Ah, you mean "unreraisable". :-)

> The relevant C API function is just called "PyErr_WriteUnraisable", not
> "PyErr_WriteUnraisableButThatIsTechnicallyWrongSinceItWasAlreadyRaisedAndWeJustCaughtItAndAreNowReportingItToStdErr".
>



More information about the Python-Dev mailing list