PEP-654: clarify that BaseExceptionGroup is the factory function that… (GH-2203)

This commit is contained in:
Irit Katriel 2021-12-27 21:51:08 +00:00 committed by GitHub
parent b07248305b
commit f2f542d544
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 8 additions and 6 deletions

View File

@ -150,12 +150,14 @@ fields ``message`` and ``exceptions``. For example:
``ExceptionGroup('issues', [ValueError('bad value'), TypeError('bad type')])``.
The difference between them is that ``ExceptionGroup`` can only wrap
``Exception`` subclasses while ``BaseExceptionGroup`` can wrap any
``BaseException`` subclass. A factory method that inspects the nested
exceptions and selects between ``ExceptionGroup`` and ``BaseExceptionGroup``
makes the choice automatic. In the rest of the document, when we refer to
an exception group, we mean either an ``ExceptionGroup`` or a
``BaseExceptionGroup``. When it is necessary to make the distinction, we
use the class name. For brevity, we will use ``ExceptionGroup`` in code
``BaseException`` subclass. The ``BaseExceptionGroup`` constructor
inspects the nested exceptions and if they are all ``Exception`` subclasses,
it returns an ``ExceptionGroup`` rather than a ``BaseExceptionGroup``. The
``ExceptionGroup`` constructor raises a ``TypeError`` if any of the nested
exceptions is not an ``Exception`` instance. In the rest of the document,
when we refer to an exception group, we mean either an ``ExceptionGroup``
or a ``BaseExceptionGroup``. When it is necessary to make the distinction,
we use the class name. For brevity, we will use ``ExceptionGroup`` in code
examples that are relevant to both.
Since an exception group can be nested, it represents a tree of exceptions,