Trusted answers to developer questions
Trusted Answers to Developer Questions

Related Tags

python
communitycreator

What is ast.ExceptHandler(type, name, body) in Python?

Abdul Monum
Abstract Syntax Tree

ast.ExceptHandler is a class defined in the ast module that expresses the except clause in Python in the form of an Abstract Syntax Tree. When the parse() method of ast is called on Python source code that contains an except clause, the ast.ExceptHandler class is invoked, which expresses the except clause to a node in an ast tree data structure. The ast.ExceptHandler class represents the ExcpetHandler node type in the ast tree.

Class parameters

  • type: the exception type that is matched. type is typically a Name node.
  • name: a raw string that contains the name of the exception or a None node if no name is specified.
  • body: list of nodes in the except block.

Code

import ast
from pprint import pprint

class ExceptHandlerVisitor(ast.NodeVisitor):

    def visit_Try(self, node):
      print('Node type: Try\nFields:', node._fields)
      ast.NodeVisitor.generic_visit(self, node)

    def visit_ExceptHandler(self, node):
        print('Node type: ExceptHandler\nFields:', node._fields)
        ast.NodeVisitor.generic_visit(self, node)

    def visit_Name(self, node):
        print('Node type: Name\nFields:', node._fields)
        ast.NodeVisitor.generic_visit(self, node)

    def visit_Pass(self, node):
        print('Node type: Pass\nFields:', node._fields)
        ast.NodeVisitor.generic_visit(self, node)

visitor = ExceptHandlerVisitor()
tree = ast.parse("""
try:
  pass
except TypeError:
  pass
else:
  pass
finally:
  pass
""")
pprint(ast.dump(tree))
visitor.visit(tree)

Explanation

  • We define a ExceptHandlerVisitor class that extends from the parent class ast.NodeVisitor. We override the predefined visit_Try, visit_ExceptHandler, visit_Name, and visit_Pass methods in the parent class, which receive the Try, ExceptHandler, Name, and Pass nodes, respectively. In the method, we print the type and the fields inside the node and call the generic_visit() method, which invokes the propagation of visit on the children nodes of the input node.
  • We initialize a visitor object of the class ExceptHandlerVisitor.
  • We write Python code that contains a try and except block. We pass the code to the ast.parse() method, which returns the result of the expression after evaluation and store the result in a tree.
  • The ast.dump() method returns a formatted string of the tree structure in a tree.
  • The visit method available to the visitor object visits all the nodes in the tree structure.

RELATED TAGS

python
communitycreator
RELATED COURSES

View all Courses

Keep Exploring