0

由于令牌错误,我正在尝试处理 Javaparser 库产生的异常。我使用了以下代码。

String content=getTheSource();
    ByteArrayInputStream bin=new ByteArrayInputStream(content.getBytes());
    try
    {
        CompilationUnit cu=JavaParser.parse(bin);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        //e.printStackTrace();
                    //my handling code here
    }finally{
        bin.close();
    }

但是,该异常从未被捕获,并且我从其他地方生成了一个不同的异常。我得到了这个例外:

线程“main”中的异常 japa.parser.TokenMgrError:第 1 行第 16 列的词法错误。遇到:“#”(35),之后:“”在 japa.parser.ASTParserTokenManager.getNextToken(ASTParserTokenManager.java:2247)在japa.parser.ASTParser.jj_ntk(ASTParser.java:9986) at japa.parser.ASTParser.ClassOrInterfaceBody(ASTParser.java:926) at japa.parser.ASTParser.ClassOrInterfaceDeclaration(ASTParser.java:604) at japa.parser.ASTParser .TypeDeclaration(ASTParser.java:524) at japa.parser.ASTParser.CompilationUnit(ASTParser.java:269) at japa.parser.JavaParser.parse(JavaParser.java:81) at japa.parser.JavaParser.parse(JavaParser. java:94) 在 misc.CompileTest.main(CompileTest.java:45)

任何想法,如何处理异常?提前致谢

4

2 回答 2

1

顾名思义,TokenMgrError 是一个错误。所以你必须捕获一个错误而不是异常。如果你想同时捕获错误和异常,你可以使用 Throwable 来代替。

最初,此错误是由 Javaparser 使用的 JavaCC ( TokenMgrError ) 引发的。

于 2016-12-23T14:00:36.177 回答
1

从版本 3 开始,JavaParser 将/不应再抛出此错误。

于 2017-08-10T15:28:55.910 回答