應用程式開發——異常(異常分類、常見異常、異常處理、自定義異常)
阿新 • • 發佈:2019-02-17
異常分類:(Throwable:所有異常和錯誤的父類)
● Error:JVM無法解決的嚴重問題(JVM系統內部錯誤、資源耗盡等。一般不編寫針對性的程式碼進行處理)
● Exception:程式設計錯誤或偶然的外在因素導致的一般性問題,可以使用針對性的程式碼進行處理
------------------------------------------------------------------------------------------------------------------
Exception:(處理異常的作用:使程式能夠繼續執行)
● 執行時異常:程式執行時才產生的錯誤(異常),可以不顯示的處理,當發生時才處理
● 編譯時異常:編寫程式碼時,就發生的錯誤(異常),必須顯示的處理
------------------------------------------------------------------------------------------------------------------
常見異常:
執行時異常:(java.lang.RuntimeException)
● 型別轉換異常:ClassCastException
● 空指標異常:NullPointerException
● 陣列下標越界異常:ArrayIndexOutOfBoundsException
● 字串下標越界異常:StringIndexOutOfBoundsException
● 算術異常:ArithmeticException
● 找不到類異常:ClassNotFoundException
IO流異常:(java.io.IOExeption)
● 找不到檔案異常:FileNotFoundException
SQL異常:java.sql.SQLException
------------------------------------------------------------------------------------------------------------------
異常處理:(抓拋模式——丟擲異常)
程式執行過程中出現異常,會生成一個異常類物件,該物件將被提交給Java執行時系統,這過程稱為丟擲(throw)異常
異常物件的生成:
● 自動丟擲:在當前程式碼中沒有找到相應的處理程式,就會在後臺自動建立一個對應異常類的例項物件並丟擲
● 手動丟擲:建立異常型別的物件或者在方法體上丟擲異常型別
● 程式碼中丟擲異常語法:throw new 異常型別("異常資訊")
● 方法體上丟擲異常語法:throws 異常型別
------------------------------------------------------------------------------------------------------------------
異常處理:(抓拋模式——捕獲異常(抓:把上面丟擲來的異常,進行抓取處理))
方法內丟擲異常,如果異常沒有在呼叫者方法中得到處理,則繼續被拋給這個方法的上層方法,直到異常被處理(如果異常回到main()方法並且也未處理,則程式執行終止),這過程稱為捕獲(catch)異常
注意:每個try可以伴隨一個或多個catch,用於處理可能產生的不同型別的異常物件(只能處理和他型別相相容的異常),如果不明確異常物件,也可以用其父類作為catch的引數。多個catch時,異常型別為“並列”關係,可以無先後順序。子父類關係,必須把子類異常寫在父類異常之前。finally不是必須的,需要時才抒寫。try{}catch{}可以巢狀
------------------------------------------------------------------------------------------------------------------
捕獲異常有關資訊:(與其它物件一樣,可以訪問一個異常物件的成員變數或呼叫它的方法)
● 異常資訊:異常物件.getMessage( )
● 所有資訊:異常物件.printStackTrace( )(異常型別,錯誤訊息,程式執行跟蹤等等)
------------------------------------------------------------------------------------------------------------------
處理過程:
Try中檢測到異常會將異常物件傳遞給catch,catch捕獲到異常進行處理。Finally裡通常用來關閉資源
------------------------------------------------------------------------------------------------------------------
自定義異常類:
● 需要編寫自己需要執行的過載構造器
● 物件通過throw丟擲
------------------------------------------------------------------------------------------------------------------
異常處理5個關鍵字:
------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,還望告知