Java中的異常分為兩種,一種是檢查性異常(checked exception),另一種是非檢查性異常(unchecked exception)。
檢查性異常指的是可能會在方法中拋出的異常,例如文件找不到、網絡連接中斷等等。在方法中拋出這種異常時,必須在方法的定義處聲明該異常,并且調用該方法的代碼必須包含處理該異常的代碼。否則編譯器就會報錯。
public void readFile(String path) throws FileNotFoundException { FileInputStream fileInputStream = new FileInputStream(path); // 讀文件操作 }
非檢查性異常指的是程序在運行時可能會出現的異常,例如空指針異常、數組下標越界等等。這種異常不是必須要在方法的聲明處進行聲明,而且如果發生這種異常,也不必要求調用該方法的代碼做出任何的處理。因此,非檢查性異常也稱為運行時異常。
public void divide(int dividend, int divisor) { int result = dividend / divisor; }
可以使用try-catch語句來捕獲異常,并且根據不同的異常類型進行處理。另外還有finally語句用來執行無論是否出現異常都需要執行的語句。
try { // 可能會拋出異常的代碼 } catch (Exception e) { // 處理異常的代碼 } finally { // 最終執行的代碼 }
總的來說,檢查性異常是必須要處理的異常,而非檢查性異常則是由程序員自己保證代碼的正確性。在開發過程中,需要根據實際的需求來選擇拋出哪種類型的異常。