Python Glossary English

все Python 3astпонятие

ast.ExceptHandler

управление потоком

Узел одной ветки except: тип исключения в type, имя из as в name и тело body. Ветки лежат в списке handlers узла Try или TryStar.

Синтаксис

ast.ExceptHandler(type=None, name=None, body)

name — строка или None, а не узел Name, поэтому поиск переменных через visit_Name её не найдёт. Голый except: даёт type=None — так линтеры и ловят «глотающий всё» обработчик. except (A, B) хранит в type узел Tuple, и все классы приходится доставать из его elts. Ветки except* в 3.11+ тоже ExceptHandler, но лежат в TryStar.

Примеры

import ast
src = 'try:\n    pass\nexcept (KeyError, ValueError) as e:\n    pass\nexcept:\n    pass'
first, bare = ast.parse(src).body[0].handlers
print(type(first.type).__name__, repr(first.name))  # → Tuple 'e'
print([el.id for el in first.type.elts])  # → ['KeyError', 'ValueError']
print(bare.type, bare.name)  # → None None

См. также

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