bpo-42669: Document that `except` rejects nested tuples (GH-23822) (GH-23871)
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
(cherry picked from commit c95f8bc270
)
Co-authored-by: Colin Watson <cjwatson@debian.org>
Co-authored-by: Colin Watson <cjwatson@debian.org>
This commit is contained in:
parent
b01091a3e7
commit
81f706d2db
|
@ -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
|
||||
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
|
||||
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
|
||||
continues in the surrounding code and on the invocation stack. [#]_
|
||||
|
|
Loading…
Reference in New Issue