Python Glossary English

Python 3.11+Исключенияисключение

ExceptionGroup

встроенные исключения

Группа нескольких исключений сразу (Python 3.11+); обрабатывается except*.

Синтаксис

raise ExceptionGroup

Членство в группе не работает «прозрачно»: except ValueError не поймает группу, внутри которой лежит ValueError, а except ExceptionGroup не сработает на одиночный ValueError, брошенный обычным raise. Ради этого и придумали except* — он разбирает группу по типам, выполняет ветку для подходящего подмножества, а остальные исключения пробрасывает дальше; при обычном except вы получаете объект целиком и разбираете список e.exceptions руками. Конструктор требует непустой список, а все элементы — наследники Exception; для BaseException-потомков есть BaseExceptionGroup. Чаще всего группу вы встретите не в своём raise, а на выходе из asyncio.TaskGroup.

Примеры

try:
    raise ExceptionGroup('несколько ошибок', [ValueError('a'), KeyError('b')])
except ExceptionGroup as e:
    print(type(e).__name__)   # → ExceptionGroup

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности