我正在使用O'Reilly的Apache ZooKeeper书中的代码,我遇到了这个函数:
String queueCommand(String command) throws KeeperException
{
while(true)
{
try
{
String name = zk.create("/task/task-", command.getBytes(), OPEN_ACL_UNSAFE, CreateMode.SEQUENTIAL);
return name;
break;
} catch (NodeExistsException e) {
throw new Exception(name + " already appears to be running");
} catch (ConnectionLossException e) { }
}
}
这只是一个错误吗?我是否正确,断言是没用的?
答案 0 :(得分:1)
break;
语句后的return name;
语句(或任何其他语句)将无法编译。无法访问的代码。
答案 1 :(得分:1)
return
与break
类似,用于完整功能而不是循环和切换。是的。
答案 2 :(得分:1)
一旦达到return
语句,就不会在该方法中执行更多代码。因此,在这种情况下,实际上永远不会达到break
语句,所以你没有必要这样做。我猜这个写它的人只是想要额外的(读:太)小心。
实际上,编译时编译器应该给出unreachable code
警告,因为它会识别出你的程序中无法访问的部分列出了操作。
一般来说,由于这个原因,直接在return
语句之后进行任何操作是非常糟糕的做法。