Java中的檢查異常與非檢查異常
檢查異常
檢查異常是在編譯時發生的異常,也稱為編譯時異常。這些異常在編譯時不能簡單地忽略,程式設計師應該處理這些異常。
例如,如果你的程式使用**FileReader**類從檔案讀取資料,如果建構函式中指定的檔案不存在,則會發生*FileNotFoundException*異常,編譯器會提示程式設計師處理該異常。
示例
import java.io.File; import java.io.FileReader; public class FilenotFound_Demo { public static void main(String args[]) { File file = new File("E://file.txt"); FileReader fr = new FileReader(file); } }
如果你嘗試編譯上面的程式,你將會得到以下異常。
輸出
C:\>javac FilenotFound_Demo.java FilenotFound_Demo.java:8: error: unreported exception FileNotFoundException; must be caught or declared to be thrown FileReader fr = new FileReader(file); ^ 1 error
**注意** − 由於FileReader類的**read()**和**close()**方法會丟擲IOException,你可以看到編譯器會通知處理IOException以及FileNotFoundException。
非檢查異常
非檢查異常是在執行時發生的異常,也稱為**執行時異常**。這些異常包括程式設計錯誤,例如邏輯錯誤或API的不當使用。執行時異常在編譯時會被忽略。
例如,如果你的程式中聲明瞭一個大小為5的陣列,並嘗試呼叫陣列的第6個元素,則會發生*ArrayIndexOutOfBoundsException*異常。
示例
public class Unchecked_Demo { public static void main(String args[]) { int num[] = {1, 2, 3, 4}; System.out.println(num[5]); } }
如果你編譯並執行上面的程式,你將會得到以下異常。
輸出
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5 at Exceptions.Unchecked_Demo.main(Unchecked_Demo.java:8)
廣告