[轉]finally塊的問題(finally block does not complete ...

當finall塊中包含return語句時,Eclipse會給出警告「finally block does not complete normally」,緣由分析以下:orm

一、無論try塊、catch塊中是否有return語句,finally塊都會執行。
二、finally塊中的return語句會覆蓋前 面的return語句(try塊、catch塊中的return語句),因此若是finally塊中有return語句,Eclipse編譯器會報警告 「finally block does not complete normally」。ip

三、若是finally塊中包含了return語句,即便前面的catch塊從新拋出了異常,則調用該方法的語句也不會得到catch塊從新拋出的異常,而是會獲得finally塊的返回值,而且不會捕獲異常。編譯器

結論,應避免在finally塊中包含return語句。若是你在前面的語句中包含了return語句或從新拋出了異常,又在finally塊中包含了return語句,說明你概念混淆,沒有理解finally塊的意義。編譯

相關文章
相關標籤/搜索