Exceptions as a Control Structure

Peter Hansen peter at engcorp.com
Mon Aug 9 15:50:25 CEST 2004

Olivier Parisy wrote:

> Peter Hansen wrote:
>> Exceptions are also used by some as a mechanism for
>> returning information from subroutines, though it's
>> very likely the information will still be considered
>> "exceptional" in some way (think of it as an out-of-band
>> mechanism for returning special info).
> Do you have some example of this in the standard library ?

It's easy to check for yourself, you have the source. ;-)

I searched for "(Exception" in the lib/*.py files, since
this code is likely to occur when someone subclasses the
top-level exception class.

There's an example similar to what I was describing in
inspect.py, using an EndOfBlock exception.  The Queue
module has Full and Empty exceptions that are a good
example.  By far the most occurrences of custom
exceptions are to define specialized ones denoting
error conditions, however.  I suspect the usage I
described is more common outside the standard library,
in part because code where it would be useful is more
likely to occur in higher level code.


More information about the Python-list mailing list