Skip to content

Commit

Permalink
PEP-654: clarify that BaseExceptionGroup is the factory function that… (
Browse files Browse the repository at this point in the history
  • Loading branch information
iritkatriel authored Dec 27, 2021
1 parent b072483 commit f2f542d
Showing 1 changed file with 8 additions and 6 deletions.
14 changes: 8 additions & 6 deletions pep-0654.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit f2f542d

Please sign in to comment.