java之finally的用法


package com.smbea.demo.tryCatchFinally;

/**
 * java之finally的用法
 * @author hapday
 * @2017年2月5日 @上午12:21:16
 */
public class TryCatchFinallyDemo {

	public static void main(String[] args) {
		hasException();
		System.out.println("\n——————————————————————————————————————————————————————————————————\n");
		noneException();
		System.out.println("\n——————————————————————————————————————————————————————————————————\n");
		System.out.println(hasReturnAndNoneException());
		System.out.println("\n——————————————————————————————————————————————————————————————————\n");
		System.out.println(hasReturnAndHasException());
	}

	/**
	 * 有異常發生
	 */
	public static void hasException() {
		int divisor = 10;
		int dividend = 0;
		
		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
		} catch (Exception e) {
			System.out.println("這里的代碼只有出現異常后執行...");
			e.printStackTrace();
		} finally {
			System.out.println("這里的代碼始終執行,不論有沒有發生異常或在 try 塊中出現 return 語句,都不受影響...");
		}
	}

	/**
	 * 無異常發生
	 */
	public static void noneException() {
		int divisor = 10;
		int dividend = 10;
		
		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
		} catch (Exception e) {
			System.out.println("這里的代碼只有出現異常后執行...");
			e.printStackTrace();
		} finally {
			System.out.println("這里的代碼始終執行,不論有沒有發生異常或在 try 塊中出現 return 語句,都不受影響...");
		}
	}
	
	/**
	 * try 塊中有 return 語句但是無異常
	 * @return
	 */
	@SuppressWarnings("finally")
	public static int hasReturnAndNoneException() {
		int divisor = 10;
		int dividend = 10;

		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
			
			divisor *= 2;

			System.out.println("divisor = " + divisor);
			
			return divisor;
		} catch (Exception e) {
			System.out.println("這里的代碼只有出現異常后執行...");
			e.printStackTrace();
		} finally {
			System.out.println("這里的代碼始終執行,不論有沒有發生異常或在 try 塊中出現 return 語句,都不受影響...");
			
			divisor *= 3;
			
			System.out.println("divisor = " + divisor);

			return divisor;
		}
	}

	/**
	 * try 塊中有 return 語句但是有異常
	 * @return
	 */
	@SuppressWarnings("finally")
	public static int hasReturnAndHasException() {
		int divisor = 10;
		int dividend = 0;
		
		try {
			System.out.println(divisor + " / " + dividend + " = " + (divisor / dividend));
			
			divisor *= 2;

			System.out.println("divisor = " + divisor);
			
			return divisor;
		} catch (Exception e) {
			System.out.println("這里的代碼只有出現異常后執行...");
			e.printStackTrace();
		} finally {
			System.out.println("這里的代碼始終執行,不論有沒有發生異常或在 try 塊中出現 return 語句,都不受影響...");
			
			divisor *= 3;
			
			System.out.println("divisor = " + divisor);

			return divisor;
		}
	}
}

  


免責聲明!

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



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