无论如何在finally语句中获得返回值?

Blu*_*hin 3 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. 
}
Run Code Online (Sandbox Code Playgroud)

Bre*_*nes 7

一旦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;
Run Code Online (Sandbox Code Playgroud)