我有一个方法,它提示return语句丢失,但我不认为 return -1
将被执行。有人能告诉我为什么吗?
private int loop() {
int retryTimes = 2;
do {
try {
// simulate real business
int value = new Random().nextInt(3);
if (value % 3 != 0) {
throw new RuntimeException();
}
return value;
} catch (Exception e) {
if (retryTimes <= 0) {
throw e;
}
}
} while (retryTimes-- > 0);
// if below line not exists; prompt error: missing return statement
return -1;
}
2条答案
按热度按时间7fyelxc51#
java编译器怀疑
while
循环迭代2次以上,该行return -1
会被联系到的。而且,如果没有return
声明,那就有问题了。实际代码的逻辑不一定允许这一点对编译器来说并不重要。总是会有意外的异常,因此应该在方法的末尾,在循环之外有一个catch all return语句。
7vhp5slm2#
可以像这样将return语句放在catch块中,因为成功执行时返回值,失败时也需要返回值。