真真正正的try_catch_finally語句的最根本的地方 和return .system.exit(0)
阿新 • • 發佈:2019-02-01
package Text01; class Exercise { public static String catchMethod() { System.out.print("call catchMethod and return --->> "); return "catchMethod"; } // finally後續處理工作 public static String finallyMethod() { System.out.println(); System.out.print("call finallyMethod and do something --->> "); return "finallyMethod"; } public static String catchTest() { try { int i = 10 / 0; // 丟擲 Exception,後續處理被拒絕 System.out.println("i vaule is : " + i); return "Test"; // Exception 已經丟擲,沒有獲得被執行的機會 } catch (Exception e) { System.out.println(" -- Exception --"); return catchMethod(); // Exception 丟擲,獲得了呼叫方法並返回方法值的機會 } } public static String catchFinallyTest1() { try { int i = 10 / 0; // 丟擲 Exception,後續處理被拒絕 System.out.println("i vaule is : " + i); return "Test"; // Exception 已經丟擲,沒有獲得被執行的機會 } catch (Exception e) { System.out.println(" -- Exception --"); return catchMethod(); // Exception 丟擲,獲得了呼叫方法的機會,但方法值在 finally // 執行完後才返回 } finally { return finallyMethod(); // Exception 丟擲,finally 程式碼塊將在 catch 執行 // return 之前被執行 } } public static String catchFinallyTest2() { try { int i = 10 / 2; // 不丟擲 Exception System.out.println("i vaule is : " + i); return "Test"; // 獲得被執行的機會,但執行需要在 finally 執行完成之後才能被執行 } catch (Exception e) { System.out.println(" -- Exception --"); return catchMethod(); } finally { finallyMethod(); // return "finally"; // finally 中含有 return 語句,這個 return // 將結束這個方法,不會在執行完之後再跳回 // try 或 catch 繼續執行,方法到此結束,返回 false } } public static String catchFinallyTest3() { try { int i = 10 / 2; // 不丟擲 Exception System.out.println("i vaule is : " + i); return "Test"; // 獲得被執行的機會,但執行需要在 finally 執行完成之後才能被執行 } catch (Exception e) { System.out.println(" -- Exception --"); return catchMethod(); } finally { finallyMethod(); // System.exit(0); return "finally"; // finally 中含有 return 語句,這個 return // 將結束這個方法,不會在執行完之後再跳回 // try 或 catch 繼續執行,方法到此結束,返回 false } } public static String catchFinallyTest4() { try { int i = 10 / 0; // 不丟擲 Exception System.out.println("i vaule is : " + i); return "Test"; // 獲得被執行的機會,但執行需要在 finally 執行完成之後才能被執行 } catch (Exception e) { System.out.println(" -- Exception --"); return catchMethod(); } } public static void main(String[] args) { // Cout.addLine("0---------"+catchTest());Cout.endl(); // Cout.addLine("1---------"+catchFinallyTest1());Cout.endl();//我這裡使用了一個自定義的包,你們可以把它們全部變成System.out.println()語句 // Cout.addLine("2---------"+catchFinallyTest2());Cout.endl(); Cout.addLine("3---------"+catchFinallyTest3());Cout.endl(); Cout.addLine("4---------"+catchFinallyTest4());Cout.endl(); } }
看完了你們可以試下變下程式,這個還是自己去實踐才是最好的收穫。
-- Exception -- call catchMethod and return --->> 0---------catchMethod -- Exception -- call catchMethod and return --->> call finallyMethod and do something --->> 1---------finallyMethod i vaule is : 5 call finallyMethod and do something --->> 2---------Test i vaule is : 5 call finallyMethod and do something --->> 3---------finally -- Exception -- call catchMethod and return --->> 4---------catchMethod
看到了這個應該就懂了吧!!!