[Python-Dev] [Python-checkins] cpython: Close #17828: better handling of codec errors
Stefan Behnel
stefan_ml at behnel.de
Fri Nov 15 08:22:59 CET 2013
Nick Coghlan, 13.11.2013 17:25:
> Note that the specific problem with just annotating the exception
> rather than a specific frame is that you lose the stack context for
> where the annotation occurred. The current chaining workaround doesn't
> just change the exception message, it also breaks the stack into two
> pieces (inside and outside the codec) that get displayed separately.
I find this specific chain of exceptions a bit excessive, though:
"""
Failed example:
str(result)
Expected:
Traceback (most recent call last):
...
LookupError: unknown encoding: UCS4
Got:
LookupError: unknown encoding: UCS4
<BLANKLINE>
The above exception was the direct cause of the following exception:
<BLANKLINE>
Traceback (most recent call last):
File ".../py3km/python/lib/python3.4/doctest.py", line 1291, in __run
compileflags, 1), test.globs)
File "<doctest xpathxslt.txt[89]>", line 1, in <module>
str(result)
File "xslt.pxi", line 727, in lxml.etree._XSLTResultTree.__str__
(src/lxml/lxml.etree.c:143584)
File "xslt.pxi", line 750, in lxml.etree._XSLTResultTree.__unicode__
(src/lxml/lxml.etree.c:143853)
LookupError: decoding with 'UCS4' codec failed (LookupError: unknown
encoding: UCS4)
"""
I can't see any bit of information being added by chaining the exceptions
in this specific case.
Remember that each change to exception messages and/or exception chaining
will break someone's doctests somewhere, and it's really ugly to work
around chained exceptions in (cross-Py-version) doctests.
I understand that this is helpful *in general*, though, i.e. for other
kinds of exceptions in codecs, so maybe changing the exception handling in
the doctest module could be a work-around for this kind of change?
Stefan
More information about the Python-Dev
mailing list