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;
}
}
}