我目前正在開發一個Eclipse插件,用於顯示帶有預測流的圖(哪個方法拋出Exception,哪個方法捕獲異常)。獲取IMethod捕獲的所有異常
問題是:我有一個IMethod實例,我想獲得它捕獲的所有異常(不拋出)。我最近可以這樣做,但只是將IMethod的源代碼作爲字符串進行分析,並查找它是否包含子句「catch(」或「catch(」和提取異常名稱。
是否有更好的方法?這樣做是爲了找到一種方法捕獲該異常類型
我目前正在開發一個Eclipse插件,用於顯示帶有預測流的圖(哪個方法拋出Exception,哪個方法捕獲異常)。獲取IMethod捕獲的所有異常
問題是:我有一個IMethod實例,我想獲得它捕獲的所有異常(不拋出)。我最近可以這樣做,但只是將IMethod的源代碼作爲字符串進行分析,並查找它是否包含子句「catch(」或「catch(」和提取異常名稱。
是否有更好的方法?這樣做是爲了找到一種方法捕獲該異常類型
您可以使用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
}
}
參見:
如果我理解正確這你想要的東西是這樣的:
try {
//do sth
} catch(Exception e) {
Class c = e.getClass();
String exceptionType = c.getName();
}