Java 在finally语句中是否仍有返回值?
在一些遗留代码中,有几个地方可以返回值。我想记录返回值。是否可以在finally语句中获取返回值 例如:Java 在finally语句中是否仍有返回值?,java,finally,Java,Finally,在一些遗留代码中,有几个地方可以返回值。我想记录返回值。是否可以在finally语句中获取返回值 例如: try { if (v == 1) { return 3; } else if (v == 3) { return x + 2; } } finally { // I need to know the return value here, either 3 or x + 2. } 没有;finally块没有上一个返回值的上下文 最好将值存
try {
if (v == 1) {
return 3;
} else if (v == 3) {
return x + 2;
}
} finally {
// I need to know the return value here, either 3 or x + 2.
}
没有;
finally
块没有上一个返回值的上下文
最好将值存储在变量中,记录变量,然后稍后返回变量
int result = 0;
if (v == 1) {
result = 3;
log.debug(result);
return result;
} else if (v == 3) {
result = x + 2;
log.debug(result);
return result;
}
调用
return
后,将跳过该函数中的所有其他内容。如果您想知道该值是多少,最好将3
或x+2
保存在try
块范围之外的变量中
int ret = -1;
try {
if (v == 1) {
ret = 3;
}
else if (v == 3) {
ret = x + 2;
}
}
finally {
System.out.println("The value of ret is " + ret);
}
return ret;
为什么不在返回
if
或else if
语句之前记录它?返回后,它将退出该方法。否。您可以做的是影响一个变量,在finally中使用它,然后返回它。您希望finally块的值是多少,以查看v
是否既不是1也不是3?因为这是遗留代码,我希望进行尽可能少的更改。可能希望将return
移到finally
块之外。@Andreas,说得好。这就是我没有跟上Java约定的原因:P