Java中的異常分為兩種,一種是檢查異常(Checked Exception),另一種是非檢查異常(Unchecked Exception)。它們的主要區(qū)別在于編譯器的處理方式。
檢查異常是指在編譯時(shí)就會(huì)被檢查出來的異常,即編譯器要求在代碼中必須進(jìn)行異常處理或者聲明異常的拋出。如果不進(jìn)行異常處理或者聲明異常的拋出,程序?qū)o法通過編譯。常見的檢查異常有IOException、ClassNotFoundException等。
try { FileReader fileReader = new FileReader("file.txt"); char[] buffer = new char[1024]; fileReader.read(buffer); } catch (IOException e) { e.printStackTrace(); }
非檢查異常是指在運(yùn)行時(shí)才被檢查出來的異常,編譯器不要求進(jìn)行異常處理或者聲明異常的拋出。如果發(fā)生非檢查異常,程序會(huì)直接退出或者拋出一個(gè)未處理的異常。常見的非檢查異常有NullPointerException、ArrayIndexOutOfBoundsException等。
int a = 0; int b = 1 / a; System.out.println(b);
對(duì)于檢查異常,編譯器會(huì)強(qiáng)制進(jìn)行異常處理或者聲明異常的拋出,以保證程序的健壯性和可維護(hù)性。而對(duì)于非檢查異常,編譯器不會(huì)強(qiáng)制進(jìn)行異常處理或者聲明異常的拋出,因此需要程序員自己去處理異常。在實(shí)際開發(fā)中,我們應(yīng)該在程序中謹(jǐn)慎使用非檢查異常,以防止出現(xiàn)不可預(yù)知的錯(cuò)誤。