SlideShare a Scribd company logo
1 of 17
例外異常處理機制
Exception觀念原理
● 程式一定會發生錯誤
● 程式執行時所發生足以中斷程式正常執行的錯誤事件
● 當發生錯誤時, 方法本身會建立一個Exception物件實體
Exception觀念原理
Java執行系統要求方法必須接收或是指定方法執行時可能丟
出的異常事件
● 接收(Catch)
● 指定(Specify)
● 必須檢查的異常事件
● 方法可能丟出的異常事件
try … catch … finally 語法
Try
{
}
catch (…)
{
}
finally (…)
{
}
next line of the code
Try
{
}
catch (…)
{
}
finally (…)
{
}
next line of the code
No
exceptions
thrown
An
exception
arises:
實際演練
例外異常捕捉機制
Method where error occurred
Method without an exception
handler
Method with an exception
handler
main
Method call
Method call
Method call
例外異常捕抓機制
Throwable
Exception Error
Runtime eException IO Exception AWTError Thread Death OutOfMemoryError
ArrayIndexOutOfBoundsException InputMismatchException
ClassCastException NullPointerException Arithm eticException
Exception - Checked
● 屬於預防性發生的異常處理
● 可以在呼叫的方法中處理
● 若不在方法中處理, 宣告該方法會拋出例外
● 繼承自 java.lang.Exception, 但是不是在
java.lang.Runtime之下
Exception - Runtime
● 可能會在執行中發生的異常
● 可以不處理
● 繼承自 java.lang.RuntimeException
實際演練
throw
● 舉例: 開發撰寫一個汽車類別, 設定輪胎個數
public class Car {
private int intTires;
public void setTires(int num){
if (num>4 || num <= 0) throw new
Exception();
else intTires = num;
}
}
throws
方法宣告可能拋出的異常例外
● 方法內部的異常例外
● 繼承關係下的宣告
o 比父類別少
o 比父類別小
實際演練
規劃設計Exception
● throw的運用
● 自定Exception
o 自定Checked Exception
o 自定Runtime Exception
實際演練
方法繼承覆寫(1)
比父類別拋出較少的例外異常
(實際演練)
方法繼承覆寫(2)
比父類別拋出較小的例外異常
(實際演練)

More Related Content

Similar to Java_04:例外異常處理機制

CH08:例外處理
CH08:例外處理CH08:例外處理
CH08:例外處理Justin Lin
 
Clean code ch7_exception
Clean code ch7_exceptionClean code ch7_exception
Clean code ch7_exceptionssuser27764c
 
例外處理實務
例外處理實務例外處理實務
例外處理實務Jeff Chu
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理Justin Lin
 
第12回AS讀書會
第12回AS讀書會第12回AS讀書會
第12回AS讀書會Etrex Kuo
 

Similar to Java_04:例外異常處理機制 (6)

CH08:例外處理
CH08:例外處理CH08:例外處理
CH08:例外處理
 
Clean code ch7_exception
Clean code ch7_exceptionClean code ch7_exception
Clean code ch7_exception
 
例外處理實務
例外處理實務例外處理實務
例外處理實務
 
例外處理
例外處理例外處理
例外處理
 
7. 例外處理
7. 例外處理7. 例外處理
7. 例外處理
 
第12回AS讀書會
第12回AS讀書會第12回AS讀書會
第12回AS讀書會
 

More from Brad Chao

Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:ThreadBrad Chao
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:CollectionBrad Chao
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Brad Chao
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Brad Chao
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Brad Chao
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計Brad Chao
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)Brad Chao
 

More from Brad Chao (8)

Java_08:SQL
Java_08:SQLJava_08:SQL
Java_08:SQL
 
Java_07:Thread
Java_07:ThreadJava_07:Thread
Java_07:Thread
 
Java_06:Collection
Java_06:CollectionJava_06:Collection
Java_06:Collection
 
Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制Java_05:檔案輸出輸入機制
Java_05:檔案輸出輸入機制
 
Java_03:進階物件導向觀念
Java_03:進階物件導向觀念Java_03:進階物件導向觀念
Java_03:進階物件導向觀念
 
Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計Java_02:初探物件導向程式設計
Java_02:初探物件導向程式設計
 
Java 基本程式設計
Java 基本程式設計Java 基本程式設計
Java 基本程式設計
 
Java Basic(1)
Java Basic(1)Java Basic(1)
Java Basic(1)
 

Java_04:例外異常處理機制