在研究一些解析API时,我遇到了一种用于编写解析函数的常用技术:
final public Query parse() throws ParseException {
Query q;
// some parsing code using tokens here
{if (true) return q;}
throw new Error("Missing return statement in function");
}
我注意到许多解析器类使用了相同的语法
(即org.apache.lucene.queryparser.flexible.standard.parser.StandardSyntaxParser #TopLevelQuery&
它让我感到困惑,因为我无法得出具体的结论,为什么这段代码是这样编写的。
是否有隐藏的东西,除了强调它必须总是返回一些东西?
提前致谢,
答案 0 :(得分:1)
自动生成的代码通常是正确的,但几乎看不到优雅。在不担心优雅的情况下生成正确的代码是很困难的。
似是而非的猜测:{在那里是因为那时发电机不知道它是否需要它;它很快就会学到,但“很快”不是“现在”。抛出是因为那时生成器不确定它是否为100%的输入生成了一个return语句。