異常是程式中的一些錯誤,但並不是所有的錯誤都是異常,並且錯誤有時是可以避免的。
比如說,你的程式碼少了一個分號,那麼執行出來結果是提示是錯誤java.lang.Error;如果你用System.out.println(11/0),那麼你是因為你用0做了除數,會拋出java.lang.ArithmeticException 的例外。
異常發生的原因有很多,通常包含以下幾大類:
使用者輸入了非法資料。
要開啟的檔案不存在。
網路通訊時連線中斷,或JVM記憶體溢位。
這些異常有的是因為使用者錯誤引起,有的是程式錯誤引起的,還有其它一些是因為物理錯誤引起的。 -
要理解Java異常處理是如何運作的,你需要掌握以下三種類型的例外:
檢查性例外:最具代表的檢查性異常是使用者錯誤或問題引起的異常,這是程式設計師無法預見的。例如要開啟一個不存在檔案時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。
執行階段異常: 運作時異常是可能被程式設計師避免的異常。與檢查性異常相反,運行時異常可以在編譯時被忽略。
錯誤: 錯誤不是異常,而是脫離程式設計師控制的問題。錯誤在程式碼中通常被忽略。例如,當堆疊溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。
程式運行時發生的無法被處理的錯誤,一旦發生,JVM終止執行。
Exception是程式編譯與執行時間出現的錯誤,一旦出現,JVM將告知程式設計師處理,處理得當,程式依然可以執行,這一點不同與Error,Error一旦發生,無法處理,程式立即終止。
分為兩種:
運行時異常:在執行時間發生,RuntimeException類別及子類別。編譯時不需要處理,發生在執行階段。 常見的有NullPointerException\StringIndexOutOfBounds \ClassCastException \ArrayIndexOutOfBounds。
編譯時異常(受查異常):程式碼寫時必須處理的異常,若不處理,編譯無法通過。編譯時異常在編譯程式碼階段設定了處理措施,所以即使發生異常,可能也不會影響程式的正常運行,有些系統因此將編譯時異常視作正常情況處理,例如Spring預設發生編譯時異常時正常提交。在程式中明確地拋出異常相當於編譯階段必須處理的異常,屬於編譯時異常。常見的有ClassNotFoundException \FileNotFounException\ParseException\SQLException\IOException。
兩種異常劃分的依據是實際發生的機率,JVM將發生幾率高的異常當做受查異常,要求程式設計師在編寫程式碼時處理,而執行時異常JVM認為發生幾率很低,不需要程式設計師處理。
用於在方法內部捕獲並處理異常。
將可能發生例外的語句區塊放在try後,例外發生時try語句區塊停止執行,跳到catch語句區塊執行,catch語句區塊執行完畢,將繼續執行catch語句區塊後面的程式碼。
無論是否發生例外,finally語句區塊都會執行,通常會將關閉資源的程式碼放在其中。
繼承Exception,在指定條件下拋出例外"throw MyException(xxxx )",目的是詳細反映程式運作狀況。
以上是Java 異常處理圖文實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!