在Java中,当try块中存在return语句,并且后面跟着finally块时,执行的顺序可能会有些令人困惑。重要的是要了解,finally块总是会被执行,不论try块中是否发生异常。

但是,当try块中包含return语句时,这里的执行流程是这样的:

try块中的代码被执行。
如果try块中遇到return语句,该return语句会被执行,并且返回值会被暂存起来(不会立即返回给调用者)。
然后,finally块中的代码会被执行。
最后,之前暂存的返回值会被返回给调用者。
这意味着finally块中的代码实际上是在try块中的return语句之后执行的,但是从调用者的角度来看,返回值是在finally块执行完毕后才收到的。

需要注意的是,如果finally块中也包含return语句,那么它会覆盖try块中的return语句,并且最终返回的是finally块中指定的值。

07-08 06:19