[Python-Dev] PEP 409 and the stdlib
R. David Murray
rdmurray at bitdance.com
Tue May 21 17:55:43 CEST 2013
On Tue, 21 May 2013 01:39:03 +1000, Steven D'Aprano <steve at pearwood.info> wrote:
> On 21/05/13 00:12, Ethan Furman wrote:
>
> > As a case in point, base64.py is currently getting a bug fix, and also contains this code:
> >
> > def b32decode(s, casefold=False, map01=None):
> > .
> > .
> > .
> > for i in range(0, len(s), 8):
> > quanta = s[i: i + 8]
> > acc = 0
> > try:
> > for c in quanta:
> > acc = (acc << 5) + b32rev[c]
> > except KeyError:
> > raise binascii.Error('Non-base32 digit found')
> > .
> > .
> > .
> > else:
> > raise binascii.Error('Incorrect padding')
> >
> > Does the KeyError qualify as irrelevant noise?
[...]
> In another reply, R.David Murray answered:
>
> "I don't see that it is of benefit to suppress [the KeyError]."
>
> Can I suggest that it's obviously been a long, long time since you
> were a beginner to the language, and you've forgotten how intimidating
> error messages can be? Error messages should be *relevant*. Irrelevant
> details don't help, they hinder, and I suggest that the KeyError is
> irrelevant.
Doubtless you are correct. Now that you mention it I do remember being
confused, even as an experienced programmer, by the chained exceptions
when I first started dealing with them, but at this point I suppose it
has become second nature :).
I agree with the subsequent discussion that this error is a good case
for 'from None', given that any such conversion should make sure all
essential information is contained in the new error message. And I agree
with Nick that there are probably many more places where 'raise from'
will help clarify things when we *don't* want 'from None'.
--David
More information about the Python-Dev
mailing list