def _build_ex_tree(self):
<EOL>sep = self._exh_obj.callables_separator<EOL>data = self._exh_obj.exceptions_db<EOL>if not data:<EOL><INDENT>raise RuntimeError("<STR_LIT>")<EOL><DEDENT>for item in data:<EOL><INDENT>item["<STR_LIT:name>"] = "<STR_LIT>".format(sep=sep, name=item["<STR_LIT:name>"])<EOL><DEDENT>self._tobj = ptrie.Trie(sep)<EOL>try:<EOL><INDENT>self._tobj.add_nodes(data)<EOL><DEDENT>except ValueError as eobj:<EOL><INDENT>if str(eobj).startswith("<STR_LIT>"):<EOL><INDENT>raise RuntimeError("<STR_LIT>")<EOL><DEDENT>raise<EOL><DEDENT>node = self._tobj.root_name<EOL>while (len(self._tobj.get_children(node)) == <NUM_LIT:1>) and (<EOL>not self._tobj.get_data(node)<EOL>):<EOL><INDENT>node = self._tobj.get_children(node)[<NUM_LIT:0>]<EOL><DEDENT>if not self._tobj.is_root(node):  <EOL><INDENT>self._tobj.make_root(node)<EOL>nsep = self._tobj.node_separator<EOL>prefix = nsep.join(node.split(self._tobj.node_separator)[:-<NUM_LIT:1>])<EOL>self._tobj.delete_prefix(prefix)<EOL><DEDENT>self._print_ex_tree()<EOL>
Construct exception tree from trace.