【发布时间】:2014-12-28 02:31:24
【问题描述】:
我有一个语法,它在词法分析器中解析 URI,然后在语法操作中从它们构造一个 java.net.URL。词法分析器可以接受可能不是合法 URL 的字符串,所以如果它们被抛出,我想智能地处理 URISyntaxExceptions。
我是 ANTLR 4 的新手(但在 ANTLR 3 上花了一些时间),只是想知道在 4 中处理此类异常的最佳实践。
这是语法中的代码 sn-p:
iri returns [IRI term] :
IRIREF
{ $term = spt.getIRI($IRIREF.text); } |
prefixedName
;
'spt' 是我为启动规则设置的一个支持对象。方法“getIRI”可以抛出java.net.URISyntaxException。我想要一种优雅的方式来在规则中本地处理这个问题,终止解析(或做其他事情),但不知道在哪里附加一个 catch 块。
【问题讨论】:
-
我也有使用 ANTLR3 的经验(在 ANTLR4 中几乎没有),所以我能感受到你的痛苦。如果您发布代码和您当前的策略,那么我可以保证至少投票(如果没有任何实际帮助)。因为您的问题可能会因为过于宽泛或主要基于意见而被关闭。
-
谢谢,艾略特。我添加了一个 sn-p。
-
想到另一个解决方案 - 我可以修改支持对象以引发自定义运行时异常并在开始生产之外捕获它。我对此并不满意,但它会让我暂时继续前进。
标签: java error-handling antlr4