不能在finally塊中return

2021-07-23 23:08:05 字數 605 閱讀 1828

try-catch塊中永遠返回finally中return的值 

【錯誤**】 

static boolean f() finally   } 

錯誤分析 

在這個應用場景中,不要用return來退出finally語句塊,因為finally語句塊都會被執行到,這樣try程式塊中執行正常也會在finally中退出,不會再回到try程式塊中。 

try-catch的流程說明: 

try catch(異常) finally   } 

1,try-catch-finally, 

如果try語句塊遇到異常,try下面的**就不執行了,轉而執行catch語句塊,執行完再執行finally語句塊,最後結束。 

2,try-finally, 

如果在try語句塊中執行到return語句前一條,未遇到異常,轉而執行finally語句塊,執行完再執行try中的return語句。 

不要用return、break、continue或throw來退出finally語句塊

正確用法 

//該方法返回false 

static boolean f() finally   } 

不要在finally塊中處理返回值

一 分析 在finally中處理return返回值,上看上去很完美,都符合邏輯,但是執行起來就會產生邏輯錯誤,最重要的一點是finally是用來做異常處理的收尾處理的,一旦加上return語句,就會讓程式的複雜程度陡然提公升,而且會在一些隱蔽性非常高的錯誤。與return語句相似,system.ex...

不能在安全模式中啟動這項服務

背景 進入到安全模式後,再進入到正常啟動模式後,電腦就不正常了,開機進入到桌面特別久,右鍵也不正常,各種慢,office也不能使用,瀏覽器也打不開。各種找問題,費了很長時間。最終通過如下方法解決了問題 今天被我遇到了,網上看了很多方法,終於找到了解決的,我的是win10系統進入安全模式?然後重啟電腦...

為什麼不能在函式中申請大陣列?

1.簡而言之,陣列定義在函式中時,占用的記憶體來自棧空間,棧空間是在程序建立時初始化的,有固定的大小,一般很小,所以太大的陣列會耗光棧空間。全域性變數一般分配在資料段,可以比較大。2.bbs段 資料段 段 堆與棧及5大記憶體分配 bss段 block started by symbol bss段 b...