例外处理(Exception Handling)与Package.doc
上传人:sy****28 上传时间:2024-09-12 格式:DOC 页数:18 大小:3.1MB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

例外处理(Exception Handling)与Package.doc

例外处理(ExceptionHandling)与Package.doc

预览

免费试读已结束,剩余 8 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

例外處理(ExceptionHandling)與Package一般在撰寫程式之時,有的時候因為語法錯誤或是思考不周密,程式之中可能會有一些意想不到的情況發生,此時我們需要除錯(debug)。若是產生例外,我們必須要處理它。何謂例外處理?所謂的例外處理在這裡指的是有一些狀況我們知道可能會發生,於是我們先行設計一個機制來處理它。這就好比說我們在廚房安裝防火警報器一般,平時正常使用之時完全不會有反應,一旦偵測到溫度太高,它馬上就會相對應的反應起來。可能是警鈴大作,也有的是自動關瓦斯,或者是其他別的對應方式,無論如何,此狀況被通知處理,至於如何反應,端看設計者的設計而定。程式的例外處理與廚房的概念是相類似的,就是說我們必須先行設想當程式在執行時,是否可能會因為什麼例外狀況造成程式執行錯誤,當此例外狀況發生時,我們必須能夠偵測並處理它。一般來說,當例外產生時,所有的正常程序被迫終止,然後由例外處理的程序接手。當一個例外發生,我們稱該例外被丟出(thrown)。當相對應的例外處理開始執行,我們說丟出的例外被接(caught)。在這裡我們先來看例外如何被拋接。首先看以下例子:/**ExceptionDemo1**此程式丟出超過陣列大小的例外*/classExceptionDemo1{publicstaticvoidmain(Stringargs[]){inta[]={1,3,5,6,7};intb=a[5];System.out.println(b);}//main}//ExceptionDemo1在上例中,當你去Compiler這個程式,並不會發生問題,但是當你執行這個程式的時候,就會出現如下的錯誤訊息。這個錯誤訊息指出在我們執行該程式到第14行的時候丟出型態為ArrayIndexOutOfBoundsException的例外。5.1try…catch在上例中我們可以清楚看到因為陣列a的大小為5,而當整數b要求第六個元素的時候,自然會產生超過陣列長度的例外。而這樣可能發生的錯誤,我們可以用try{}…catch{}的語法來偵測並處理。此語法的作法是將可能會產生例外的程式碼放置於try之後的大括號內,如果例外真的發生了,便跳到catch之後的大括號執行處理。一般來說,我們會在catch提示可能的錯誤訊息,以方便更正,這樣的程式寫法將欲執行程式碼及處理錯誤的程式碼分開,可讓我們更加容易處理錯誤,增加程式的可讀性。新的程式碼如下:/**ExceptionDemo1_1**用try...catch語法拋接例外*/classExceptionDemo1_1{publicstaticvoidmain(Stringargs[]){try{inta[]={1,3,5,6,7};intb=a[5];System.out.println(b);}catch(Exceptione){System.out.println(e+"\n可能超過陣列長度。");}//catch}//main}//ExceptionDemo1_1在此我們將欲執行且可能發生例外的程式碼放在try之後的大括號內,緊跟著catch來接收例外的產生,如此,你可以得知例外產生是因為我們試著去取得陣列的index=5的位置,而此位置是超出陣列範圍的。我們再看以下例子以增進對try…catch語法的瞭解。/**ExceptionDemo2**拋接分母為零的例外*/classExceptionDemo2{publicstaticvoidmain(Stringargs[]){try{intzero=0;inti=100/zero;System.out.println(i);}catch(Exceptione){System.out.println(e+"\n分母不得為零");}//catch}//main}//ExceptionDemo2上例中因為發生了分母為零的例外,當我們承接(catch)到此例外之時,將錯誤的原因列印出來,以幫助改正。一般來說,如果是一個連續使用的程式,例如要輸入某資料來得到另一個資訊,如果輸入的資料造成例外,可能程式就停止了,一般來說,我們可以將try…catch放在whileloop之內,這樣如果拋接例外之後,還是可以繼續執行程式。類似的結構會在以後出現。上面的例子中,我們承接的例外類型全都是Exception。一般來說,我們會使用某種特定的例外形式來承接某種特殊