1、只有 try-catch 的情况下,如果不发生异常,则会返回 try 中的 return ; 如果发生异常,则会返回 catch 中的 return, try 中的 return 被盖掉;
2、finally 中的 return 值会覆盖 try 和 catch 中的 return 值。在正常情况(即程序正常执行try catch finally语句块,不会在语句中出现退出程序、线程终止等特殊情况)下,都会执行finally语句块,如果finally中有return,则程序会走finally中的return,如果没有,则先执行try或者catch中的return,将其存入临时栈中,执行完finally语句后才返回临时栈中的值。
例1:如下代码执行结果为 7
catch和finally都包含return,会执行catch里面的return语句,但并不返回。最终return的是finally里面的值。
例2:如下代码执行结果为 9
catch中执行到return语句时,不会真正的return,即只是会计算return中的表达式,之后将本应返回的结果(本题为9)保存在一个临时栈中,接着执行finally中的语句,最后才会从临时栈中取出之前的结果返回。