|An Introduction to Python|
by Guido van Rossum and Fred L. Drake, Jr.
Paperback (6"x9"), 124 pages
RRP £12.95 ($19.95)
Sales of this book support the Python Software Foundation! Get a printed copy>>>
9.8 Exceptions Are Classes Too
User-defined exceptions are identified by classes as well. Using this mechanism it is possible to create extensible hierarchies of exceptions.
There are two valid (semantic) forms for the raise statement:
raise Class, instance raise instance
In the first form,
instance must be an instance of
Class or of a class derived from it. The second form is a
raise instance.__class__, instance
A class in an except clause is compatible with an exception if it is the same class or a base class thereof (but not the other way around--an except clause listing a derived class is not compatible with a base class). For example, the following code will print B, C, D in that order:
class B: pass class C(B): pass class D(C): pass for c in [B, C, D]: try: raise c() except D: print "D" except C: print "C" except B: print "B"
Note that if the except clauses were reversed (with ‘except B’ first), it would have printed B, B, B--the first matching except clause is triggered.
When an error message is printed for an unhandled exception, the
exception's class name is printed, then a colon and a space, and
finally the instance converted to a string using the built-in function
|ISBN 0954161769||An Introduction to Python||See the print edition|