首先執(zhí)行try,如果有異常執(zhí)行catch,無論如何都會(huì)執(zhí)行finally
一個(gè)函數(shù)中肯定會(huì)執(zhí)行finally中的部分。
關(guān)于一個(gè)函數(shù)的執(zhí)行過程是,當(dāng)有return以后,函數(shù)就會(huì)把這個(gè)數(shù)據(jù)存儲(chǔ)在某個(gè)位置,然后告訴主函數(shù),我不執(zhí)行了,接下來你執(zhí)行吧,所以函數(shù)就會(huì)推出。
但是當(dāng)一個(gè)函數(shù)中出現(xiàn)finally以后,finally永遠(yuǎn)都要執(zhí)行,所以,就算try或者catch中已經(jīng)執(zhí)行了return了,但是這時(shí)函數(shù)不會(huì)退出,不會(huì)告訴主函數(shù)去執(zhí)行,而是等待finally執(zhí)行完了才回去告訴主函數(shù)去執(zhí)行,這時(shí)候如果finally中出現(xiàn)了return的話,這次return的值就會(huì)覆蓋掉try或者catch中的值,然后才會(huì)告訴主函數(shù):我不執(zhí)行了,你去執(zhí)行吧。所以主函數(shù)會(huì)得到finally中的返回值。也就是說子函數(shù)的返回值永遠(yuǎn)是finally中的返回值(只要被調(diào)用的函數(shù)中有值)