finally語句塊的有限範圍(skycto JEEditor)

書寫人生發表於2019-09-17

finally語句塊一定執行嗎?

答案是不一定。

    直接返回未執行到finally語句塊

    丟擲異常未執行到finally語句塊

    系統退出未執行到finally語句塊

...

存在很多特殊情況導致finally語句塊不執行。

程式碼如下

    public static String test() {

             String str = null;

             int i = 0;

             if (i == 0) {

                       return str;//直接返回未執行到finally語句塊

             }

             try {

                       System.out.println("try...");

                       return str;

             } finally {

                       System.out.println("finally...");

             }

    }

    

    public static String test2() {

             String str = null;

             int i = 0;

             i = i / 0;//丟擲異常未執行到finally語句塊

             try {

                       System.out.println("try...");

                       return str;

             } finally {

                       System.out.println("finally...");

             }

    }

    

    public static String test3() {

             String str = null;

             try {

                       System.out.println("try...");

                       System.exit(0);//系統退出未執行到finally語句塊

                       return str;

             } finally {

                       System.out.println("finally...");

             }

    }

————————————————

版權宣告:本文為CSDN博主「ConstXiong」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連結及本宣告。

原文連結:https://blog.csdn.net/meism5/article/details/89177179


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69947338/viewspace-2657328/,如需轉載,請註明出處,否則將追究法律責任。

相關文章