亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

try catch語句return返回值的原理是啥

public class Test {


public static void main(String[] args) {

????Test t = new Test();

????int result = t.xx();

????System.out.println("運行完畢,返回的值為:"+result);

}

????public int xx() {

????????int div = 10;

????????int result = 100;

????????try {

????????????while(div>1) {

????????????div--;

????????????result = result+100/div;

????????}

????????System.out.println("程序正常運行,輸出結果:"+result);

????????return result = 10;

????????}catch(Exception e) {

????????????e.printStackTrace();

????????????System.out.println("循環拋出異常");

????????}

????????finally {

????????????System.out.println("fianlly執行了");

????????}

????????return result = 20;

????}

}

代碼如上,評論里有人說try? catch的語句只要執行了return,那么語句塊結束,但是視頻里老師說try? catch語句塊結束之后不是會繼續往下運行嗎,那么我這里try語句中return返回了10,然后語句塊結束,執行return result = 20;? 最后main函數里接收到的值不應該是20嗎?但是運行之后main函數里的值是10,這是為什么,到底誰說的對。還有:

public int xx() {

int div = 10;

int result = 100;

try {

while(div>0) {

div--;

result = result+100/div;

}

System.out.println("程序正常運行,輸出結果:"+result);

return result = 10;

}catch(Exception e) {

e.printStackTrace();

System.out.println("循環拋出異常");

return result = 1;

}

finally {

System.out.println("fianlly執行了");

}

return result = 20;

}

寫成這樣return result = 20; 就會報錯,為什么啊,之前在try里寫了return,不是可以正常運行嗎?怎么在catch里面寫就報錯呢,求解?。。。。。。。。。?!

正在回答

3 回答

個人的理解是不報錯的時候,程序只執行到catch之前,報錯后執行catch后面的程序,result被重新賦值為20,所以返回到main函數的值為20

0 回復 有任何疑惑可以回復我~
#1

慕的地2053752

應該是不報錯執行try內的程序,報錯執行后面的程序
2019-03-26 回復 有任何疑惑可以回復我~

當div>0時,div取1時成立,div--后div=0,所以程序會報錯

0 回復 有任何疑惑可以回復我~

而且還有,我的try里面return了值,語句塊不是應該結束嗎?但是finally還是執行了,感覺熱評說的不對啊。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

try catch語句return返回值的原理是啥

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號