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