解析 API 函数中的冗余代码?

Redundant piece of code in parse APIs functions?

在研究一些解析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 &

http://google-gson.googlecode.com/svn-history/r320/trunk/gson/src/main/java/com/google/gson/JsonParser.java#parse )

让我很困惑,因为我无法得出一个具体的结论,为什么这段代码会这样写。

除了强调它必须始终return之外,还有什么隐藏的东西吗?

提前致谢,

自动生成的代码通常是正确的,但很难看起来优雅。在不担心优雅的情况下生成正确的代码已经足够困难了。

合理的猜测:{ 在那里是因为此时生成器不知道它是否需要它;它很快就会学会,但 "soon" 不是 "now"。 throw 在那里是因为此时生成器不确定它是否为 100% 的输入生成了 return 语句。