原因如下:
- 不管try塊、catch塊中是否有return語句,finally塊都會執行。
- finally塊中的return語句會覆寫前面的return語句(try塊、catch塊中的return語句),是以如果finally塊中有return語句,Eclipse編譯器會報警告“finally block does not complete normally”。
- 如果finally塊中包含了return語句,即使前面的catch塊重新抛出了異常,則調用該方法的語句也不會獲得catch塊重新抛出的異常,而是會得到finally塊的傳回值,并且不會捕獲異常。
結論:
應避免在finally塊中包含return語句。如果你在前面的語句中包含了return語句或重新抛出了異常,又在finally塊中包含了return語句,說明你概念混淆,沒有了解finally塊的意義。