最近發現,有些東西還是要記錄一下的,不記錄事情一多就慢慢地忘了,真的是好記性不如爛筆頭。今天記錄一下finally的警告“finally block does not complete normally”的原因,以及解決方法。(finally必須出現在try,catch塊之后,不能單獨出現)。
在解決這個警告之前,我們需要先梳理一下各種情況下try,catch,finally的執行結果。
1.當try,catch中有return,finally中沒有return時,無論finally中對返回值如何修改,最后返回的依舊是try,catch中的返回值。
2.當try,cath中沒有return,finally中有return時,最后返回的是finally中經過處理的返回值。
3.當try,catch中有return,finally中有return時,try,catch中的return被finally中的return覆蓋,最后真正返回的是finally中經過處理的返回值。
我們再看一下警告信息“finally block does not complete normally”,它是因為try,catch中有return,而且finally中也有return,finally中的return會覆蓋掉try,catch中的return,可能導致finally塊無法正常完成。解決這個異常我們根據情況去掉其中一個return即可,不過最好別在finally中加return,他可能會導致返回的並不是我們在try,catch中要返回的值。
https://www.cnblogs.com/aigongsi/archive/2012/04/19/2457735.html
