这是我在开源Java模板项目中找到的代码片段。
有没有人知道这个结构可能有什么用呢?
final public Expression Expression() throws ParseException {
Expression exp;
exp = OrExpression();
{if (true) return exp;}
throw new Error("Missing return statement in function");
}
答案 0 :(得分:3)
这是邋code的代码。实际效果只是return OrExpression();
。
我接受这样的代码有一个借口:有许多类似的其他方法,它遵循类似的模式,但更复杂,这样无用的位在这里并非无用。然而,这是一个极端的例子。
然而,throw new Error("Missing return statement in function");
几乎没有任何借口。 Java编译器将拒绝编译一个返回类型不是void
并且具有到达末尾的代码路径的方法(不return
,throw
,或进入无限循环)。这是一个好主意的唯一原因是,如果意图是允许不完整的代码编译 - 即在运行时失败而不是编译时间,以便可以使用或测试代码的其他部分 - 但即便将它应用于所有方法也是一个坏主意。
答案 1 :(得分:1)
这是来自JavaCC的自动生成的代码。