Java中的異常分為編譯時異常(Checked Exception)和運行時異常(Unchecked Exception)。
編譯時異常:編譯時異常是在編譯階段就出現的異常,必須在代碼中顯式處理或聲明拋出。編譯時異常包括IOException、ClassNotFoundException等。如果不處理或聲明拋出編譯時異常,編譯器將會報錯,不允許程序通過編譯。編譯時異常的處理方式可以是使用try-catch語句進行捕獲和處理,或者在方法簽名中使用throws關鍵字聲明異常。
運行時異常:運行時異常是在程序運行時才出現的異常,不需要在代碼中顯式處理或聲明拋出。運行時異常包括NullPointerException、ArrayIndexOutOfBoundsException等。運行時異常是由程序邏輯錯誤造成的,通常是程序員的錯誤,比如對空引用進行操作、數組越界等。運行時異常不強制要求進行捕獲和處理,如果不處理,程序將終止執行并拋出異常信息。
總結:
編譯時異常必須顯式處理或聲明拋出,運行時異常不需要。
編譯時異常發生在編譯階段,運行時異常發生在程序運行階段。
編譯時異常是由外部因素(如IO錯誤)引起的,運行時異常是由程序邏輯錯誤引起的。
編譯時異常必須處理,否則編譯器報錯,運行時異常可以不處理,但會導致程序終止執行。
需要注意的是,運行時異常雖然不強制要求進行處理,但良好的編程習慣是盡量對可能發生的異常進行處理,避免程序崩潰或產生不可預料的結果。