我目前正在开发一个Eclipse插件,用于显示带有Exption流的图形(该方法抛出异常,哪个方法捕获异常)。
问题是:我有一个IMethod实例,我希望得到它捕获的所有异常(不抛出)。我最近可以做到这一点,但只是将IMethod的源代码分析为一个字符串,并查找它是否有“catch(”或“catch(”并且拾取异常名称。
有更好的方法吗?要查找方法捕获的异常类型?
答案 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();
}