public?class?TestFinal{
????public?static?void?main(String?args[]){
????????System.out.println(doSomething());
????}
????
????public?static?int?doSomething(){
????????try{
????????????return?1;
????????}catch(Exception?e){
????????}finally{
????????????return?2;
????????}
????}
}
4 回答
已采納

喬小欠兒
TA貢獻18條經驗 獲得超15個贊
我的理解是,當走到try里時return返回的1被存在一個臨時的變量里,此時若沒有發生異常,一定會進入到finally代碼塊里(聽我這的一個老工程師說底層其實是使用了goto方法進入到finally里的)。此時finally里再次使用return把2賦到了剛才存儲1的臨時變量里。然后返回的值就變成了2。
不過在項目中是不推薦在finally里使用return的

Caballarii
TA貢獻1123條經驗 獲得超629個贊
當try中語句return之前會先執行finally中的語句,但這里在finally里面return了,所以實際不會return 1,而是return 2
最后結果是2
添加回答
舉報
0/150
提交
取消