當(dāng)finall塊中包含return語(yǔ)句時(shí),Eclipse會(huì)給出警告“finally block does not complete normally”,原因分析如下:
1、不管try塊、catch塊中是否有return語(yǔ)句,finally塊都會(huì)執(zhí)行。 2、finally塊中的return語(yǔ)句會(huì)覆蓋前面的return語(yǔ)句(try塊、catch塊中的return語(yǔ)句),所以如果finally塊中有return語(yǔ)句,Eclipse編譯器會(huì)報(bào)警告“finally block does not complete normally”。
2017-05-03
①如果finally{}塊中有return語(yǔ)句,只執(zhí)行finally{}塊中的return語(yǔ)句
②如果finally{}塊中沒(méi)有return語(yǔ)句,如果try{}有異常,則返回catch{}中的return語(yǔ)句,不然執(zhí)行try{}中return語(yǔ)句在這種情況下,return語(yǔ)句塊是在finally{}之后執(zhí)行
2017-04-07
當(dāng)finall塊中包含return語(yǔ)句時(shí),Eclipse會(huì)給出警告“finally block does not complete normally”,原因分析如下:
1、不管try塊、catch塊中是否有return語(yǔ)句,finally塊都會(huì)執(zhí)行。
2、finally塊中的return語(yǔ)句會(huì)覆蓋前面的return語(yǔ)句(try塊、catch塊中的return語(yǔ)句),所以如果finally塊中有return語(yǔ)句,Eclipse編譯器會(huì)報(bào)警告“finally block does not complete normally”。
3、如果finally塊中包含了return語(yǔ)句,即使前面的catch塊重新拋出了異常,則調(diào)用該方法的語(yǔ)句也不會(huì)獲得catch塊重新拋出的異常,而是會(huì)得到finally塊的返回值,并且不會(huì)捕獲異常。
?
結(jié)論,應(yīng)避免在finally塊中包含return語(yǔ)句。如果你在前面的語(yǔ)句中包含了return語(yǔ)句或重新拋出了異常,又在finally塊中包含了return語(yǔ)句,說(shuō)明你概念混淆,沒(méi)有理解finally塊的意義。
2017-04-06
不沖突,就算try里面有return,還是會(huì)執(zhí)行finally