[Python-checkins] gh-98172: [doc] mention that except* handles naked exceptions (GH-98496)

iritkatriel webhook-mailer at python.org
Fri Oct 21 06:35:28 EDT 2022


https://github.com/python/cpython/commit/8367ca136ed7616cb1f71bd9f1ec98dbcfd35d98
commit: 8367ca136ed7616cb1f71bd9f1ec98dbcfd35d98
branch: main
author: Irit Katriel <1055913+iritkatriel at users.noreply.github.com>
committer: iritkatriel <1055913+iritkatriel at users.noreply.github.com>
date: 2022-10-21T11:35:20+01:00
summary:

gh-98172: [doc] mention that except* handles naked exceptions (GH-98496)

files:
M Doc/reference/compound_stmts.rst

diff --git a/Doc/reference/compound_stmts.rst b/Doc/reference/compound_stmts.rst
index 896348183643..c3c78119958e 100644
--- a/Doc/reference/compound_stmts.rst
+++ b/Doc/reference/compound_stmts.rst
@@ -343,7 +343,7 @@ the case of :keyword:`except`, but in the case of exception groups we can have
 partial matches when the type matches some of the exceptions in the group.
 This means that multiple :keyword:`!except*` clauses can execute,
 each handling part of the exception group.
-Each clause executes once and handles an exception group
+Each clause executes at most once and handles an exception group
 of all matching exceptions.  Each exception in the group is handled by at most
 one :keyword:`!except*` clause, the first that matches it. ::
 
@@ -364,10 +364,22 @@ one :keyword:`!except*` clause, the first that matches it. ::
        | ValueError: 1
        +------------------------------------
 
+
 Any remaining exceptions that were not handled by any :keyword:`!except*`
 clause are re-raised at the end, combined into an exception group along with
 all exceptions that were raised from within :keyword:`!except*` clauses.
 
+If the raised exception is not an exception group and its type matches
+one of the :keyword:`!except*` clauses, it is caught and wrapped by an
+exception group with an empty message string. ::
+
+   >>> try:
+   ...     raise BlockingIOError
+   ... except* BlockingIOError as e:
+   ...     print(repr(e))
+   ...
+   ExceptionGroup('', (BlockingIOError()))
+
 An :keyword:`!except*` clause must have a matching type,
 and this type cannot be a subclass of :exc:`BaseExceptionGroup`.
 It is not possible to mix :keyword:`except` and :keyword:`!except*`



More information about the Python-checkins mailing list