Exception handling anltr 4获取错误消息
我只是试图在异常发生时获得antlr发出的错误消息。为此,我需要捕获RecognitionException并使用它来获取所需的内容 出于某种原因,我所实施的以下措施不起作用 im使用antlr 4.1 在语法中:Exception handling anltr 4获取错误消息,exception-handling,antlr4,Exception Handling,Antlr4,我只是试图在异常发生时获得antlr发出的错误消息。为此,我需要捕获RecognitionException并使用它来获取所需的内容 出于某种原因,我所实施的以下措施不起作用 im使用antlr 4.1 在语法中: @rulecatch { catch (RecognitionException e) { throw e; } } @parser::members { public void reportError(RecognitionException e)
@rulecatch
{
catch (RecognitionException e)
{
throw e;
}
}
@parser::members
{
public void reportError(RecognitionException e)
{
throw new RuntimeException(e.getMessage());
}
}
@lexer::members
{
public void reportError(RecognitionException e)
{
throw new RuntimeException(e.getMessage());
}
}
比将其写入语法更好的解决方案是基于接口编写自己的ErrorListener。您可以通过以下代码将其添加到解析器中:
parser.addErrorListener(@NotNull ANTLRErrorListener listener);
请注意,可能需要通过以下方式删除所有其他ErrorListener
parser.removeErrorListeners();
可能会实现您将每个错误发布到控制台的愿望