十一、Exception與Assertion
Download
Report
Transcript 十一、Exception與Assertion
Java 入門到認證
十一、Exception 與
Assertion
作者:許裕永
1、Exception
1-1 UnChecked
n
Exceptio
沒有針對可能產生錯誤的程式碼,撰寫錯誤處理機制,
而程式仍然可以編譯。那麼這個Exception便
屬於UnChecked Exception。
1-2 Checked Exception
沒有針對可能產生錯誤的程式碼,做錯誤處理機制,程
式在編譯時便會失敗。那麼這個Exception便
屬於Checked Exception。
2、try
catch
lly
fina
2-1 try catch
將可能會產生錯誤的程式碼寫在try的區塊中,再用catch來接收J
ava傳入的Exception物件。catch可以一個以上。
每個catch區塊中的變數名稱都是獨立的區域變數,所以兩個catc
h中的Exception都命名為e,是合法的。
2-2 try catch finally
我們應該要把跟try區塊中的程式碼有關聯,而且一定要執行的程式敍述,
寫在finally的區塊中。
2-3 try finally
try區塊後可以直接寫finally,而不寫任何catch。
2-4 巢狀try catch
如同if跟for一樣,try
catch也可以是巢狀的。
3、throws
3-1
與
throw
throws
方法中如果有丟出Checked
Excep
tion物件的敍述句,則必須在方法名稱後以
throws宣告。
3-2
throw
在程式碼中可以用throw指定丟出的Exc
eption物件。
4、自訂Exception物件
4-1
extends
class
ClassName exten
ds Exception{}
自訂的Exception均屬於Checke
d Exception 。
5、Assertion
5-1 assert
assert 運算式A[:運算式B];
5-2 啟動指令
-ea
-da
5-3 適當的使用時機
不要在assert中執行必要的運算。
不要用Assertion機制來檢測public方法的參數。
不要用Assertion機制來檢測方法的運算結果。
建議使用Assertion機制來檢測private方法的參數。
建議使用在switch的語法,來了解case不成立的原因。
程式碼重點的標註。
6、認證重點整理
6-1 Exception
Assertion是開發時期的錯誤處理機制,而Exception是執行時期的錯誤處理
機制。
Exception是一個類別名稱,它底下有許多的子類別分別代表各種不同狀況產生的錯誤。
沒有撰寫錯誤處理,而程式一樣可以編譯的Exception屬於UnCheck Exce
ption。
沒有撰寫錯誤處理,程式就無法編譯的Exception屬於Check Exceptio
n。
觀念:1、所謂產生Exception其實是建構了某一個Exception類別的物件。
2、建立Exception物件的是Java。3、Exception物件會先傳回程式之
中。
6-2 try catch finally
將可能會產生錯誤的程式碼寫在try的區塊中,再用catch來接收Java傳入的Exc
eption物件。catch可以一個以上。
catch區塊執行完畢後,並不會再回頭去執行try區塊中未執行的程式碼。
Exception在catch中的排列,父類別要置於子類別下方。
我們應該要把跟try區塊中的程式碼有關聯,而且一定要執行的程式碼,寫在finally
的區塊中。
如果變數a宣告在try的區塊中,那麼變數a就只存活在try的區塊,無論是catch或
finally的區塊都不能存取。
try區塊後可以直接寫finally,而不寫任何catch。
如同if跟for一樣,try catch也可以是巢狀的。
try catch finall是整體,各個區塊之間,不可以撰寫任何敍述句。
6、認證重點整理(二)
6-3 throws 與 throw
方法中如果有丟出Checked
Exception物件的敍述句,則必須在方
法名稱後以throws宣告。
丟出Checked Exception的方式有兩種。第一種是:呼叫有宣告t
hrows ChecdedException的方法,而該呼叫敍述沒有置放於
try catch的機制之中。另一種就是:在程式碼中用throw指定丟出的
Exception物件。
方法中不想丟出去的Checked Exception應該自行用try ca
tch處理。
方法中想丟出去的Checked Exception必須在方法名稱後面用th
rows宣告。
throw可以丟出的Exception物件,不管是UnChecked或Ch
ecked的Exception都可以。只是,如果是Checked Exce
ption就一定要宣告於throws的後面;但如果是UnChecked E
xception則是否宣告於throws後方都可以。
6、認證重點整理(三)
6-4 自訂Exception
自訂的Exception均屬於Checked Exception。
6-5 Assertion
Assertion機制的開啟及關閉是相當具有彈性,可以指定類別或package開啟;
也可以指定開啟的同時又指定部份的類別或package關閉。
Assertion機制是讓設計師設定程式中斷點,來協助處理邏輯錯誤的機制。
assert是在條件值為true時繼續執行,條件值為false時中斷程式。也就是條件
值應該是設計師預期要的值,而當執行時期該值不符合設計師的期望時,中斷程式。
Assertion機制在使用者執行時,是肯定關閉的,因為使用者不會去開啟它,也沒有必
要。
Assertion機制所產生的error是用來中斷程式,協助我們除錯,請不要把它當做
另一種if的語法來寫,更不要用try catch的機制來補捉這個AssertionE
rror。
不要在assert中執行必要的運算。
不要用Assertion機制來檢測public方法的參數。
不要用Assertion機制來檢測方法的運算結果。
建議使用Assertion機制來檢測private方法的參數。
建議使用在switch的語法中,來了解case不成立的原因。