finally语句块是依赖于try语句块存在的,通常情况下,一旦try语句被得到执行,finally语句块是一定会被执行的。(除了在try语句块中强制退出程序或者发生断电等非常规情况)。
特别地,当try语句块中有return语句时,程序将会怎样处理:
当try语句块执行到 return somevalue;时,系统会将当时的somevalue保存在栈中,但暂时先不return,而是去执行finally语句块,如果finally语句块中有return语句,则会执行finally块中的return。
否则,将返回try块中的return,返回值为当时保存的somevalue. 即便是finally语句块中对somevalue再作处理,对于try块中的return somevalue也是不产生影响的。
网友评论