在程序的編寫和運行中,發生錯誤是不可避免的。下面將介紹怎麼處理錯誤導致的異常情況。
工具/原料
ECLIPSE
一、異常概述
在程序中,錯誤可能產生於程序員沒有預料到的各種情況,或者是因為超出了程序員控制之外的環境因素,如用戶的壞數據、試圖打開一個根本不存在的文件等。在Java中這種在程序運行時可能出現的一些錯誤稱為異常。異常是一個在程序執行期間發生的事件,它中斷了正在執行的程序的正常指令流。
二、處理程序異常錯誤
1、錯誤
異常產生後,如果不做任何處理,程序就會被終止。例如,將一個字符串轉換為整型,可以通過Integer類的parseInt()方法來實現。但如果該字符串不是數字形式,parseInt()方法就會拋出異常,程序將停留在出現異常的位置,不再執行下面的語句。
舉例說明:
提示信息“lili年齡是”已經輸出,說明該句之前沒有錯誤
三、捕捉異常
Java語言的異常捕獲結構由try、catch和finally 3部分組成。其中,try語句塊存放的是可能發生異常的Java語句;catch程序塊在try語句塊之後,用來激發被捕獲的異常;finally語句塊是異常處理結構的最後執行部分,無論try塊中的代碼如何退出,都將執行finally塊。
語法如下:
try{
//程序塊代碼
}
catch(Exceptiontype1 e){
//對Exceptiontype1處理
}
catch(Exceptiontype2 e){
//對Exceptiontype2處理
}
........
finally{
//程序塊
}
1、try-catch語塊
舉例說明:
從例子中可以看出,程序仍然輸出最後的提示信息。,沒有因為異常而終止。
2、finally語句塊
完整的異常處理語句一定要包括finally語句,無論程序中有無異常發生,並且無論之間的try-catch是否順利執行完畢,都會執行finally語句。
四、java常見異常
詳見下圖:
五、自定義異常
在程序中使用自定義異常類,大體可分為以下幾個步驟:
(1)創建自定義異常類。
(2)在方法中通過throw關鍵字拋出異常對象。
(3)如果在當前拋出異常的方法中處理異常,可以使用try-catch語句捕獲並處理,否則在方法的聲明處通過throws關鍵字指明要拋出給方法調用者的異常,繼續進行下一步操作。
(4)在出現異常方法的調用者中捕獲並處理異常。
六、在方法中拋出異常
1、使用throws聲明拋出異常
throws關鍵字通常被應用在聲明方法時,用來指定方法可能拋出的異常。多個異常可使用逗號分隔。
2、使用throw語句拋出異常
throw關鍵字通常用於方法體中,並且拋出一個異常對象。程序在執行到throw語句時立即終止,它後面的語句都不執行。通過throw拋出異常後,如果想在上一級代碼中來捕獲並處理異常,則需要在拋出異常的方法中使用throws關鍵字在方法的聲明中指明要拋出的異常;如果要捕捉throw拋出的異常,則必須使用try-catch語句。
舉例說明:
運行結果:除數不是負數
六、運行時異常
RuntimeException異常是程序運行過程中產生的異常。Java類庫中的每個包中都定義了異常類,所有這些類都是Throwable類的子類。Throwable類派生了兩個子類,分別是Exception和Error類。Error類及其子類用來描述Java運行系統中的內部錯誤以及資源耗盡的錯誤,這類錯誤比較嚴重。Exception類稱為非致命性類,可以通過捕捉處理使程序繼續執行。Exception類又根據錯誤發生的原因分為RuntimeException異常和RuntimeException之外的異常
JAVA異常類結構圖:
RuntimeException異常的種類
八、異常的使用原則
在程序中使用異常,可以捕獲程序中的錯誤,但是異常的使用也要遵循一定的規則,下面是異常類的幾項使用原則。
不要過多的使用異常,這樣會增加系統的負擔。
在方法中使用try-catch捕獲異常時,要對異常作出處理。
try-catch語句塊的範圍不要太大,這樣不利於對異常的分析。
一個方法被覆蓋時,覆蓋它的方法必須拋出相同的異常或子異常。