try{ //檢查此區塊裡程式是否有例外產生,若有就丟出例外 } catch(例外類型 ex){ //處理不同例外類型,可有多個catch區塊 } finally{ //此區塊可有可無,用來善後工作,無論例外是否產生皆會執行 } |
方法型態 | 方法 | 說明 |
String | getMessage() | 傳回例外說明的字串 |
void | printStackTrace() | 顯示程式呼叫的執行過程 |
try{ ...... } catch(例外類型1 ex){ ...... } catch(例外類型2 ex){ ...... } finally{ ...... } |
try{ ...... } catch(例外類型1 | 例外類型2 ex){ ...... } finally{ ...... } |
例外 | 說明 |
ArithmeticException | 數學運算時產生的例外 |
ArrayIndexOutOfBoundsException | 陣列索引值小於0或超過陣列邊界 |
ArrayStoreException | 儲存陣列元素型態不符 |
IllegalArgumentException | 方法呼叫時參數型態不同 |
NullPointerException | 物件值為null產生的例外 |
程式 |
public class example{ public static void main(String[] args){ try{ for(int i = 2;i>=0;i++){ System.out.println("6 / " + i + " = " + 6/i); } } catch(ArithmeticException ex){ System.out.println("例外說明:" + ex.getMessage()); System.out.println("例外原因:"); ex.printStackTrace(); } finally{ System.out.println("錯誤處理結束"); } System.out.println("程式結束"); } } |
輸出 |
6 / 2 = 3 6 / 1 = 6 例外說明: / by zero 例外原因: 錯誤處理結束 程式結束 java.lang.ArithmeticException: / by zero at exceptionHandle.example.main(example.java:5) |
程式 |
public class example{ static int div(int a, int b){ if(b == 0) throw new IllegalArgumentException("b不得為0"); else return a/b; } public static void main(String[] args){ int a, b; try{ a = 6; b = 2; System.out.println("a/b = " + div(a, b)); a = 5; b = 0; System.out.println("a/b = " + div(a, b)); } catch(IllegalArgumentException ex){ System.out.println("例外說明:" + ex.getMessage()); System.out.println("例外原因:"); ex.printStackTrace(); } } } |
輸出 |
a/b = 3 例外說明:b不得為0 例外原因: java.lang.IllegalArgumentException: b不得為0 at javaTest.throwTest.div(example.java:4) at javaTest.throwTest.main(example.java:16) |
程式 |
class CustomException extends Exception{ int number; public CustomException(int number){ this.number = number; } public String getMessage(){ return ("錯誤,數字" + number + "大於2"); } { public class example{ public static void main(String[] args){ try{ for(int i=1;i<5;i++){ if(i == 3) throw new CustomException(3); System.out.println("數字為:" + i); } } catch(CustomException ex){ System.out.println("例外說明:" + ex.getMessage()); System.out.println("例外原因:"); ex.printStackTrace(); } finally{ System.out.println("錯誤處理結束"); } System.out.println("程式結束"); } } |
輸出 |
數字為:1 數字為:2 exceptionHandle.CustomException: 錯誤,數字3大於2 at exceptionHandle.example.main(example.java:16) 例外說明:錯誤,數字3大於2 例外原因: 錯誤處理結束 程式結束 |