15能單獨(dú)和finally語(yǔ)句一起使用的塊是?
碰到finally的時(shí)候,編譯器做的事情其實(shí)不僅僅是調(diào)整代碼順序,而是復(fù)制finally塊的代碼。這一塊代碼會(huì)被復(fù)制到每個(gè)try塊中的出口之前,包括return, throw exception,甚至是外層for的break。
而這里的出口不是指一條java語(yǔ)句,而是編譯過之后的jump指令,所以如果return f(x),編譯過之后會(huì)變成「f(x)的匯編碼finally的匯編碼jump 上層調(diào)用地址」