Android自定義丟擲異常
前言
在android開發過程中,我們經常遇到異常的問題,崩潰丟擲異常的時候,是非常令人煩悶的。但是異常有一個好處,使得app能在編譯的時候給我們提供一些bug資訊,有時可能比較模糊,有時可能很精準,甚至提示報錯行。基於這一點,今天我們就來講講android中的異常吧。
今天要講的內容:
- throw 和 throws
- 異常型別
- 仿寫異常及其好處
一. throw 和 throws
異常通常的處理方式有 throw/throws 以及 try-catch 兩種。今天我們主要講解throw/throws這一類的處理。
- throw:丟擲異常,一般是一個具體的異常。放置在方法體內,當代碼執行此行並丟擲一個具體的異常以後,此異常下面的邏輯程式碼均不會執行。
- throws:丟擲異常的宣告,一般放在方法頭,表示此方法的執行可能會引起某個異常,或某幾個異常,throws 後面可以宣告多個異常,如 :
public static void function1() throws Exception1, Exception2, Exception3{ }
而 throws引起的異常,一般由呼叫此方法的方法去處理。
二. 異常型別
java開發異常大致分為三種:
- java.lang.Error
- java.lang.Exception
- java.lang.RuntimeException
這三個異常類都繼承於他們的父類 Throwable,其中 Error 和 Exception是 Throwable 的兩大子類。Error 一般是系統錯誤,我們不予討論,一般我們程式出現bug都是屬於Exception類,RuntimeException 是 Exception的一個子類。今天我要介紹的就是 RuntimeException 的幾個常見子類。
2.1 java.lang.NullPointerException
空指標異常,一般是物件未建立或者不存在造成的。
2.2 ava.lang.ClassNotFoundException
類異常,一般是類不存在,排查的時候注意是不是類名稱寫錯或者路徑搞錯了
2.3 java.lang.ArrayIndexOutOfBoundsException
下標越界異常,一般出現在陣列或集合的操作過程中
2.4 java.lang.IllegalArgumentException
方法引數錯誤
2.5 java.lang.IllegalAccessException
沒有訪問許可權,一般是類的許可權訪問出問題了
2.6 ArithmeticExecption
算術異常
2.7 ClassCastException
型別強轉異常
2.8 NegativeArrayException
陣列負下標異常
2.9 SecturityException
違背安全原則異常
2.10 EOFException
檔案已結束異常
2.11 FileNotFoundException
檔案未找到異常
2.12 NumberFormatException
字串轉換為數字異常
2.13 SQLException
操作資料庫異常
2.14 IOException
輸入輸出異常
2.15 NoSuchMethodException
方法未找到異常
2.16 NoSuchFieldException
屬性不存在異常
2.17 RuntimeException
執行時異常
2.18 TypeNotPresentException
型別不存在異常
當然,其實還有很多其他異常,這裡就不一一列舉了。
三. 仿寫異常及其好處
看了怎麼多的異常,那怎麼仿寫一個異常呢?下面給出一個例子:
public GestureHelper setPointCount(int pointCount){ if(pointCount<=0){ throw new SecurityException("====pointCount 請輸入大於零的值======="); } return GestureHelper.this; }
這是我程式碼中的一個方法,要求是輸入的 pointCount 要大於零,當輸入的值不滿足條件的時候,會丟擲不安全異常,然後出現括號中提示,類似如下:

1.png
這樣的話,仿寫異常的好處立見分曉了,就是當我們在寫一個工具類,傳入引數不符合條件的話,在執行期就能幫我們檢測自己的程式碼中是否有不規則的東西,能幫我們檢測程式碼的質量。
所以,這無疑是極好的!