获取IMethod捕获的所有异常

时间:2013-11-28 15:49:19

标签: java exception plugins methods

我目前正在开发一个Eclipse插件,用于显示带有Exption流的图形(该方法抛出异常,哪个方法捕获异常)。

问题是:我有一个IMethod实例,我希望得到它捕获的所有异常(不抛出)。我最近可以做到这一点,但只是将IMethod的源代码分析为一个字符串,并查找它是否有“catch(”或“catch(”并且拾取异常名称。

有更好的方法吗?要查找方法捕获的异常类型?

2 个答案:

答案 0 :(得分:1)

您可以使用ASTParser来解析ICompilationUnit。然后可以使用ASTVisitor

遍历解析结果
ASTParser parser = ASTParser.newParser(AST.JLS4);
parser.setSource(compilationUnit);

ASTNode node = ASTparser.createAST(progressMonitor);
node.accept(visitor);

子类ASTVisitor,以便在访问/离开某些节点时收到通知:

public class MyVisitor extends ASTVisitor {
    @Override
    public boolean visit(MethodDeclaration node) {
        // method begin
        return true;
    }

    @Override
    public boolean visit(CatchClause catchClause) {
        return false;
    }

    @Override
    public void endVisit(MethodDeclaration node) {
        // method end
    }
}

另见:

答案 1 :(得分:0)

如果我理解正确,你想要这样的东西:

    try {
         //do sth
    } catch(Exception e) { 
       Class c = e.getClass();
       String exceptionType = c.getName(); 
    }