无论如何在 finally 语句中获得 return 值?
Is there anyway to get return value in finally statement?
在一些遗留代码中,return 值有多个位置。我想记录 return 值。是否可以在finally语句中得到return值?
例如:
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
块没有前一个 return 值的上下文。
最好的办法是将值存储在变量中,记录变量,然后 return 变量。
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;
在一些遗留代码中,return 值有多个位置。我想记录 return 值。是否可以在finally语句中得到return值?
例如:
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
块没有前一个 return 值的上下文。
最好的办法是将值存储在变量中,记录变量,然后 return 变量。
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;