结论一:
return语句并不是函数的最终出口哈,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)
结论二:
finally里面不建议放return语句,根据需要,return语句可以放在try和catch里面和函数的最后。可行的做法有四:
(1)return语句只在函数最后出现一次。
(2)return语句仅在try和catch里面都出现。
(3)return语句仅在try和函数的最后都出现。
(4)return语句仅在catch和函数的最后都出现。
注意,除此之外的其他做法都是不可行的,编译器都会报错。
1.try块中没有抛出异常,try、catch和finally块中都有return语句
try-catch-finally都有return语句时,没有异常时,返回值是finally中的return返回的。
2.try块中没有抛出异常,仅try和catch中有return语句
try-catch都有return语句时,没有异常时,返回值是try中的return返回的。
3.try块中抛出异常,try、catch和finally中都有return语句
try块中抛出异常,try、catch和finally中都有return语句,返回值是finally中的return
4.try块中抛出异常,try和catch中都有return语句
返回的catch中return值。
5.try、catch中都出现异常,在finally中有返回
返回finally中return值。
6.只在函数最后出现return语句