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里面寫就報錯呢,求解?。。。。。。。。。?!
2019-03-26
個人的理解是不報錯的時候,程序只執行到catch之前,報錯后執行catch后面的程序,result被重新賦值為20,所以返回到main函數的值為20
2019-03-26
當div>0時,div取1時成立,div--后div=0,所以程序會報錯
2017-11-10
而且還有,我的try里面return了值,語句塊不是應該結束嗎?但是finally還是執行了,感覺熱評說的不對啊。