摘要: 歡迎來到“Under The Hood”第七期。本期我們介紹JVM處理finally子句的方式及相關(guān)字節(jié)碼。你可能需要閱讀往期的文章才能更好的理解本文。
finally子句
JVM執(zhí)行Java字節(jié)碼時,它有幾種方式可以退出一個代碼塊(花括號中間的語句)。其中之一,就是簡單的執(zhí)行完其中所有的語句,然后退出代碼塊。第二種,JVM可能會在代碼塊中間的任何一處,遇到像break,continue,return之類的語句,強制它跳出該代碼塊。第三種,JVM可能會在執(zhí)行過程中,出現(xiàn)了異常,然后它跳轉(zhuǎn)到匹配的catch子句,或者沒有找到相應(yīng)的catch子句,直接退出當(dāng)前線程。由于單個代碼塊有如此多的潛在退出點(exit point),擁有一個簡單的方式來表達(dá)“無論代碼塊以什么方式退出,有些事情總能發(fā)生”是很值得的。然后就有了try-finally子句。
閱讀全文