2013-11-28 97 views
0

我目前正在開發一個Eclipse插件,用於顯示帶有預測流的圖(哪個方法拋出Exception,哪個方法捕獲異常)。獲取IMethod捕獲的所有異常

問題是:我有一個IMethod實例,我想獲得它捕獲的所有異常(不拋出)。我最近可以這樣做,但只是將IMethod的源代碼作爲字符串進行分析,並查找它是否包含子句「catch(」或「catch(」和提取異常名稱。

是否有更好的方法?這樣做是爲了找到一種方法捕獲該異常類型

回答

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 
    } 
} 

參見:

0

如果我理解正確這你想要的東西是這樣的:

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