Antlr4 正在从语法操作引发RecognitionException

Antlr4 正在从语法操作引发RecognitionException,antlr4,Antlr4,我有一个“自定义”要求,即在解析时(即在成功匹配函数调用之后)验证语言中的函数调用。我知道这通常是语义相关的,因此通常稍后执行,但再一次,一个“自定义”需求 目前,我使用一个操作,在成功匹配后添加函数验证代码。当验证失败时,我尝试抛出一个全新的RecognitionException实例,但显然DefaultErrorStrategy类硬编码了它处理的错误类型,并将其自身限制为RecognitionException子类 问题是我想重新使用整个默认的错误处理机制,同时使用我自己的异常类型(或者至

我有一个“自定义”要求,即在解析时(即在成功匹配函数调用之后)验证语言中的函数调用。我知道这通常是语义相关的,因此通常稍后执行,但再一次,一个“自定义”需求

目前,我使用一个操作,在成功匹配后添加函数验证代码。当验证失败时,我尝试抛出一个全新的RecognitionException实例,但显然DefaultErrorStrategy类硬编码了它处理的错误类型,并将其自身限制为RecognitionException子类

问题是我想重新使用整个默认的错误处理机制,同时使用我自己的异常类型(或者至少是消息)


问题:我如何抛出一个普通的RecognitionException实例或它的一个子类型(与现有的子类型不同),并重新使用默认的错误处理机制?

在研究了一点之后,我回答了我自己的问题

DefaultErrorStrategy
只需通知解析器注册的错误侦听器,就可以处理任何其他
RecognitionException
子类型。它在
reportError()
的javadoc:All-other-type:调用{@link Parser#notifyErrorListeners}报告异常中有明确的说明,更不用说在代码itsef:中非常清楚

一开始误导我的是,在任何其他
RecognitionException
子类型的情况下,一条消息(我宁愿不要!)也打印到了stderr