[Python-Dev] Major revision of PEP 348 committed
Nick Coghlan
ncoghlan at gmail.com
Sun Aug 7 14:17:16 CEST 2005
Raymond Hettinger wrote:
> FIBTN (flat-is-better-than-nested) -- This bit of Zen carries extra
> significance for the exception hierarchy. The core issue is that
> exceptions are NOT inherently tree-structured. Each may ultimately
> carry its own set of meaningful attributes and those tend to not neatly
> roll-up into a parent/subclass relationships without Liskov violations.
I think this is a key point, because a Python except clause makes it easy to
create an on-the-fly exception grouping, but it is more awkward to get rid of
inheritance that is incorrect (you have to catch and reraise the ones you
don't want handled before the real handler).
I think Raymond gives a good suggestion - new groupings should only be
introduced for exceptions where we have reasonable evidence that they are
already frequently caught together.
TerminalException is a good example of this. "except (KeyboardInterrupt,
SystemExit): raise" is something that should be written often - there is a
definite use case for catching them together. Those two are also examples of
inappropriate inheritance causing obvious usability problems.
Cheers,
Nick.
P.S. Are there any other hardware control people around to understand what I
mean when I say that python-dev discussions sometimes remind me of a poorly
tuned PID loop? Particularly the with statement discussion and this one. . .
--
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
http://boredomandlaziness.blogspot.com
More information about the Python-Dev
mailing list