[Python-Dev] PEP 409 and the stdlib (original) (raw)

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