如果在 try 模塊里最后加了個(gè) return, finally 模塊還會執(zhí)行嗎?

2018-07-03 15:15 更新

是的. finally 模塊會先執(zhí)行再 return.

如果換成 System.exit (0)?

那就不會了. System.exit (0) 時(shí). 會立馬跳出程序.

try catch finally 的執(zhí)行順序

特殊情況就是里面加 return

舉個(gè)例子去理解

  1. public int getNumber() {
  2. int a = 0;
  3. try {
  4. String s = "t"; ------------------------(1
  5. a = Integer.parseInt(s);-----------(2
  6. return a;
  7. } catch (NumberFormatException e) {
  8. a = 1;-----------------------------------(3
  9. return a;-------------------------------(4
  10. } finally {
  11. a = 2;-----------------------------------(5
  12. }
  13. }

1、程序中標(biāo)記的代碼的執(zhí)行順序? 2、改程序的最后返回值(外部調(diào)用時(shí))?

程序按順序從上到下執(zhí)行到(2),字符"t"轉(zhuǎn)換成整數(shù)失敗,產(chǎn)生異常并被捕獲, 于是對a賦值成1,并將此值作為此方法的返回值(可以這么認(rèn)為,該方法有一個(gè)存放返回值的空間,此時(shí)將1放在此處)。由于存在finally塊,在返回前將該方法的內(nèi)部變量a修改成2。 所以程序?qū)礃?biāo)記的順序執(zhí)行,外部調(diào)用該方法時(shí)得到的結(jié)果是1+

先執(zhí)行try或catch里里面的代碼,然后再執(zhí)行finally,再執(zhí)行try或catch里面的return.

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號