Python 3.3+astпонятие
ast.Try
управление потоком
Узел try: body, список handlers из ExceptHandler, orelse — ветка else, finalbody — ветка finally.
Синтаксис
ast.Try(body, handlers, orelse, finalbody)
С Python 3.3 один узел покрывает все формы: try/finally без except — это Try с пустым handlers, а прежние TryExcept и TryFinally удалены. Конструкция с except* разбирается уже не в Try, а в TryStar — обход, знающий только Try, её пропустит. Порядок полей совпадает с порядком выполнения: body, handlers при ошибке, orelse без ошибки, finalbody всегда.
Примеры
import ast
t = ast.parse('try:\n f()\nfinally:\n g()').body[0]
print(type(t).__name__, t.handlers, len(t.finalbody)) # → Try [] 1
import ast
src = 'try:\n f()\nexcept ValueError:\n pass\nelse:\n ok()'
t = ast.parse(src).body[0]
print(t.handlers[0].type.id, len(t.orelse)) # → ValueError 1
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности