Exception handling anltr 4获取错误消息

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)

我只是试图在异常发生时获得antlr发出的错误消息。为此,我需要捕获RecognitionException并使用它来获取所需的内容

出于某种原因,我所实施的以下措施不起作用

im使用antlr 4.1

在语法中:

@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();
可能会实现您将每个错误发布到控制台的愿望