1.繼承關係 2.Error 程式運行時發生的無法被處理的錯誤,一旦發生,JVM終止執行。 3.Exception Exception是程式編譯與運行時出現的一種錯誤,一旦出現,JVM將告知程式員處理。分為兩種: 運行時異常:在運行時發生,RuntimeException類及子類。編譯時不需要處理, ...
1.繼承關係
2.Error
程式運行時發生的無法被處理的錯誤,一旦發生,JVM終止執行。
3.Exception
Exception是程式編譯與運行時出現的一種錯誤,一旦出現,JVM將告知程式員處理,處理得當,程式依然可以執行,這一點不同與Error,Error一旦發生,無法處理,程式立即終止。
分為兩種:
- 運行時異常:在運行時發生,RuntimeException類及子類。編譯時不需要處理,發生在運行階段。常見的有NullPointerException\StringIndexOutOfBounds \ClassCastException \ArrayIndexOutOfBounds\UnsupportedOperationException。
- 編譯時異常(受查異常):代碼編寫時必須處理的異常,若不處理,編譯無法通過。編譯時異常在編譯代碼階段設置了處理措施,所以即使發生異常,可能也不會影響程式的正常運行,有些系統因此將編譯時異常視作正常情況處理,比如Spring預設發生編譯時異常時正常提交。在程式中顯式地拋出異常相當於編譯階段必須處理的異常,屬於編譯時異常。常見的有ClassNotFoundException \FileNotFounException\ParseException\SQLException\IOException。
兩種異常劃分的依據是實際發生的概率,JVM將發生幾率高的異常當做受查異常,要求程式員在編寫代碼時處理,而運行時異常JVM認為發生幾率很低,不需要程式員處理。
4.try...catch...finally...
- 用於在方法內部捕獲並處理異常。
- 將可能發生異常的語句塊放在try後,異常發生時try語句塊停止執行,跳到catch語句塊執行,catch語句塊執行完畢,將繼續執行catch語句塊後面的代碼。
- 無論是否發生異常,finally語句塊都會執行,通常將關閉資源的代碼放在其中。
5.自定義異常
繼承Exception,在指定條件下拋出異常"throw MyException(xxxx)",目的是詳細地反映程式運行狀況。