mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
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:
parent
24411f8a8d
commit
cea632ece5
2 changed files with 31 additions and 50 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue