我遇到了这样一种情况: 非空穴法非空穴法缺少 返回语句,而代码仍在编译。 我知道 while 循环后面的语句是 联系不上(死代码) ,永远不会被执行。但是为什么编译器甚至不警告返回一些内容呢?或者,为什么一种语言允许我们有一个非 void 方法,它有一个无限循环,却不返回任何东西?
public int doNotReturnAnything() {
while(true) {
//do something
}
//no return statement
}
如果我在 while 循环中添加了 break 语句(甚至是条件语句) ,编译器会抱怨这些臭名昭著的错误: Eclipse 中的 Method does not return a value
和 Visual Studio 中的 Not all code paths return a value
。
public int doNotReturnAnything() {
while(true) {
if(mustReturn) break;
//do something
}
//no return statement
}
Java 和 C # 都是如此。