1. 程式人生 > >android異常處理概述

android異常處理概述

而Java提供了一套比較優秀的異常處理機制: 
    1、使開發人員不必編寫特殊程式碼來測試返回值就能發現問題, 
    2、在語法結構就把正常的程式碼和異常處理的程式碼清晰的分開來, 
    3、允許我們使用相同的異常處理程式碼來處理一定範圍內的所有異常。 
以期產生一種高效的、有組織的異常處理方式。

異常分為三大類:

1.執行時異常:RuntimeException

2.檢查時異常:try{}catch{}finally{}

3.錯誤:Error

這三個都是Thrawable的子類,實現了Serializable介面。

執行時異常:這類錯誤時因為程式的演算法問題有些bug沒有除錯完畢。

檢查時異常:這類異常編譯器會提示需要進行try catch,如果沒有的話,就會編譯不通過

錯誤:此類異常是由於系統的問題,比如說記憶體耗盡。

異常處理的幾條規則:
try用於定義可能發生異常的程式碼段,這個程式碼塊被稱為監視區域,所有可能出現檢驗異常的程式碼寫在這裡。
catch程式碼段緊跟在try程式碼段後面,中間不能有任何其他程式碼。
try後面可以沒catch程式碼段,這實際上是放棄了捕捉異常,把異常捕捉的任務交給呼叫棧的上一層程式碼。
try後面可以有一個或者多個catch程式碼段,如果有多個catch程式碼段那麼程式只會進入其中某一個catch。
catch捕捉的多個異常之間有繼承關係的話,要先捕捉子類後捕捉父類。
finally程式碼段可以要也可以不要。
如果try程式碼段沒有產生異常,那麼finally程式碼段會被立即執行,如果產生了異常,那麼finally程式碼段會在catch程式碼段執行完成後立即執行。
可以只有try和finally沒有catch。

常見異常
ArrayIndexOfBoundsException陣列下標越界異常
ClassCastException強制轉換類失敗異常
IllegalArgumentException方法引數型別傳入異常
IllegalStateException非法的裝置狀態異常
NullPointException傳說中的空指標異常,如果一個物件不存在,你有對這個物件使用點操作,那麼就會出現該異常
NumberFormatException把字串轉成數字失敗時出現的數字格式異常
AssertionError斷言錯誤
ExceptionInInitializerError試圖初始化靜態變數或者靜態初始化塊時丟擲
StackOverflowError棧溢位錯誤
NoClassDefFoundError找不到指定的類錯誤