1. 程式人生 > >應用程式開發——異常(異常分類、常見異常、異常處理、自定義異常)

應用程式開發——異常(異常分類、常見異常、異常處理、自定義異常)

異常分類: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個關鍵字:

------------------------------------------------------------------------------------------------------------------
自己整理,有些地方是扒拉的,如有侵犯,還望告知