Issue #21864: Remove outdated section about exceptions from the tutorial

Move the still relevant parts of it to the previous
chapter, "Errors and Exceptions".
This commit is contained in:
Berker Peksag 2016-11-06 21:15:01 +03:00
parent 24411f8a8d
commit cea632ece5
2 changed files with 31 additions and 50 deletions

View file

@ -744,55 +744,6 @@ object with the method :meth:`m`, and ``m.__func__`` is the function object
corresponding to the method.
.. _tut-exceptionclasses:
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 new valid (semantic) forms for the :keyword:`raise` statement::
raise Class
raise Instance
In the first form, ``Class`` must be an instance of :class:`type` or of a
class derived from it. The first form is a shorthand for::
raise Class()
A class in an :keyword:`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(Exception):
pass
class C(B):
pass
class D(C):
pass
for cls in [B, C, D]:
try:
raise cls()
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 :func:`str`.
.. _tut-iterators:
Iterators