finally語句塊一定會執行嗎?


public class SystemExitAndFinally {

    
    public static void main(String[] args)
    {
        
        try{

            
            System.out.println("in main");
            
            throw new Exception("Exception is thrown in main");

                    //System.exit(0);

        
        }
        
        catch(Exception e)

            {
            
            System.out.println(e.getMessage());
            
            System.exit(0);
        
        }
        
        finally
        
        {
            
            System.out.println("in finally");
        
        }
    
    }


}

執行結果截圖:

原因:

在Java語言的異常處理中,finally塊的作用就是為了保證無論出現什么情況,finally塊里的代碼一定會被執行。由於程序執行return就意味着結束對當前函數的調用並跳出這個函數體,因此任何語句要執行都只能在return前執行(除非碰到exit函數),因此finally塊里的代碼也是在return之前執行的。此外,如果try-finally或者catch-finally中都有return,那么finally塊中的return將會覆蓋別處的return語句,最終返回到調用者那里的是finally中return的值。

 

注:當遇到exit時,會直接退出程序,不會執行下邊的finally中的語句。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM