1. 程式人生 > >真真正正的try_catch_finally語句的最根本的地方 和return .system.exit(0)

真真正正的try_catch_finally語句的最根本的地方 和return .system.exit(0)

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

看到了這個應該就懂了吧!!!