注意:return的位置。。。從這幾個例子中可以看到,如果try之前沒有有條件的return,則try..catch
..finally語句塊中的語句都是順序執行(如果try中或者catch中
有return語句,那麼先執行該return,然後執行finally, 如果finally中也有return, 該出的返回值會覆蓋掉try 和 catch中的return值;
如果try..
catch
..finally語句塊之後有return語句, try中、catch中、finally中都沒有 (有條件的return 語句)先按順序執行到finally,
最後return, 如果在try中或者catch中有 (有條件的return)那麼先執行該return, 然後執行finally),否則即在進入try語句塊之前返回就不會執行try語句
//finaly 先執行, return 後執行
public
class
test
public
static
inttt()
catch
(exception e)
finally
system.out.println("finally");
}return b+=88;
}}//
先執行第乙個return, 然後執行finally
public
class
test
public
static
inttt()
catch
(exception e)
finally
system.out.println("finally");
return b+88;}}}
//在try中增加乙個有條件的異常丟擲,然後其中的return語句被忽略
public
class
test
public
static
inttt()
catch
(exception e)
finally
system.out.println("finally");
}return b+=88;
}}//finally中的返回值將覆蓋try中的return返回值
public
class
test
public
static
inttt()
catch
(exception e)
finally
system.out.println("finally");
return b+=88;
}
}}//
cathch中的return 也會被finally中的return覆蓋
public
class
test
public
static
inttt()
catch
(exception e)
finally
system.out.println("finally");
return b+=88;
}
}}//
直接返回,下面不再執行try..catch...finally語句塊
public
class
test
public
static
inttt()
catch
(exception e)
finally
system.out.println("finally");
return b+=88;
}
}}
Java中finally與return的執行順序
finally不會執行的兩種情況 1.finally對應的try塊語句還沒被執行到就返回了2.finally對應的try塊語句中有system.exit 這樣的語句 finally塊的語句在try或catch中的return語句 執行之後返回之前執行 若finally裡也有return語句,則 覆蓋...
Java異常捕獲機制中的finally
package day08 finally塊 finally塊定義在異常捕獲機制的最後 可以直接跟在try塊之後或最後乙個catch塊之後。finally塊中的 一定會執行,無論try塊中的 是否丟擲異常。所以通常會把釋放資源等操作放在finally中,例如關閉流等。author kaixu pub...
java中finally一定會執行嗎?
面試的時候,經常會被問到finally的用法,是否一定會執行,有return的情況會怎麼樣?大多數應該都認為finally 是一定會被執行的,其實不然。看下面的 public int getnum try catch exception e finally return num 通過測試發現,如果程...