金英華 孫麗


摘 要:程序錯誤包括兩種:語法錯誤(編譯錯誤)和運行錯誤(異常)。語法錯誤是指由于輸入程序時的語句錯誤,導致程序無法通過編譯系統而產生的錯誤。Java語言語法中關鍵字或者標識符要區分大小寫,以及要正確地輸入Java語句,編寫程序設計時要遵守這些規則,否則編譯時就會出現錯誤,需要程序員調試修正。運行錯誤是程序在運行過程中產生的錯誤, 數組下標不能越界,除數不能為零和引用文件無法找到等等,這類錯誤屬于是運行錯誤, 異常處理就是針對這些運行錯誤進行控制和處理的。
關鍵詞:Java,異常類,Error,Exception
1、異常的定義
就是在程序運行時由代碼所產生的不正常狀態。換句話來說,異常就是一個運行錯誤。
異常處理的關鍵詞有:try、catch、finally 、throw、throws,共5個。
2、異常的結構
類Thorwable是所有錯誤類(Error)和異常類(Exception)的父類,如圖1所示。
Error類及其子類由Java虛擬機生成并拋出,由系統接收并處理,程序員無法通過調整程序代碼來避免這種錯誤,例如,Java虛擬機運行錯誤(Virtual MachineError)和類定義錯誤(NoClassDefFoundError)等。
Exception 類是所有異常類的父類,其子類可分為: RuntimeException和其它型異常。其中,運行異常是程序運行過程中出現的問題,例如,引用對象為空、除數為零或數組越界,則分別引發運行時異常NullPointerException、ArithmeticException和 ArrayIndexOutOfBoundException。
圖1
3、異常處理的機制
(1)try...catch關鍵字
try/catch代碼使用語法如下:
try{
// 程序代碼
}
catch(異常類型1 異常的變量名1)
{
// 程序代碼
}
catch(異常類型2 異常的變量名2)
{
// 程序代碼
}
……
(2)finally關鍵字
finally 代碼塊出現在 catch 代碼塊最后并且一定處理,語法如下:
try{
// 程序代碼
}
catch(異常類型1 異常的變量名1)
{
// 程序代碼
}
catch(異常類型2 異常的變量名2)
{
// 程序代碼
}
……
Finally
{
// 程序代碼
}
4、異常類的應用
本實例從命令行輸入兩個數,用第一個數除以第二數,輸出運算結果。如果命令行沒有輸入參數或者參數不足,則會捕捉ArrayIndexOutOfBoundsException異常;如果輸入的參數不是數字,則會捕捉NumberFormatException異常;如果第二個參數為0,則會捕捉ArithmeticException異常,輸入正確兩個數,則兩個數相除并打印出相應的信息。
行號 lsxc.java
1 public class lsxc
2 {
3 public static void main(String args[])
4 {
5
6 try
7 {
8 double a[]=new double [2];
9 double c;
10 for(int i=0;i<2;i++)
11 a[i]=Double.parseDouble(args[i]);
12 c=a[0]/a[1];
13 System.out.println(c);
14 }
15 catch(ArrayIndexOutOfBoundsException e)
16 {
17 System.out.println("沒有參數或參數不足!!!");
18 }
19 catch(NumberFormatException e)
20 {
21 System.out.println("您輸入的不是數字!!!");
22 }
23 catch(ArithmeticException e)
24 {
25 System.out.println("除數不能為零!!!");
26 }
27 }
28 }
捕捉ArrayIndexOutOfBoundsException異常的運行結果,如圖2所示。
圖2
5、結論
Java語言中的異常事件分為兩大類,即Error(錯誤)和Exception(異常)。Exception類中定義了程序可能遇到的很多異常情況,發生異常情況時,可以編寫代碼處理可能出現的異常情況,而不影響程序的繼續執行。
參考文獻
[1]李卓玲.Java程序設計實用教程.大連理工大學出版社,2005.
[2] 遲勇.Java語言程序設計.大連理工大學出版社,2013.
[3] 遲勇.Java語言程序設計實驗及實訓指導.大連理工大學出版社,2013.