Что выведет код Senior Исключения и контекстные менеджеры обновлено

except* и ExceptionGroup

Вопрос

Что выведет код? По строке на каждый print.

try:
    raise ExceptionGroup('batch', [ValueError('a'), TypeError('b'), ValueError('c')])
except* ValueError as eg:
    print('V', len(eg.exceptions))
except* TypeError as eg:
    print('T', [str(e) for e in eg.exceptions])

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: V 2, T ['b']. Каждая ветка except получает подгруппу подходящих исключений: два ValueError и один TypeError.

Что выведет

V 2
T ['b']

Разбор

Каждая ветка except* получает подгруппу подходящих исключений: два ValueError и один TypeError. В отличие от обычного except, срабатывают обе ветки. Если бы осталось необработанное исключение, оно было бы переброшено в новой группе.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.