bpo-42669: Document that `except` rejects nested tuples (GH-23822)
In Python 2, it was possible to use `except` with a nested tuple, and occasionally natural. For example, `zope.formlib.interfaces.InputErrors` is a tuple of several exception classes, and one might reasonably think to do something like this: try: self.getInputValue() return True except (InputErrors, SomethingElse): return False As of Python 3.0, this raises `TypeError: catching classes that do not inherit from BaseException is not allowed` instead: one must instead either break it up into multiple `except` clauses or flatten the tuple. However, the reference documentation was never updated to match this new restriction. Make it clear that the definition is no longer recursive. Automerge-Triggered-By: GH:ericvsmith
This commit is contained in:
parent
b0398a4b7f
commit
c95f8bc270
|
@ -254,7 +254,8 @@ present, must be last; it matches any exception. For an except clause with an
|
||||||
expression, that expression is evaluated, and the clause matches the exception
|
expression, that expression is evaluated, and the clause matches the exception
|
||||||
if the resulting object is "compatible" with the exception. An object is
|
if the resulting object is "compatible" with the exception. An object is
|
||||||
compatible with an exception if it is the class or a base class of the exception
|
compatible with an exception if it is the class or a base class of the exception
|
||||||
object or a tuple containing an item compatible with the exception.
|
object, or a tuple containing an item that is the class or a base class of
|
||||||
|
the exception object.
|
||||||
|
|
||||||
If no except clause matches the exception, the search for an exception handler
|
If no except clause matches the exception, the search for an exception handler
|
||||||
continues in the surrounding code and on the invocation stack. [#]_
|
continues in the surrounding code and on the invocation stack. [#]_
|
||||||
|
|
Loading…
Reference in New Issue