自學到java的異常時,有一些自己的理解,現在總結一下。 1.為什麼要使用異常 剛開始估計很多初學者和我一樣,不理解為什麼要異常,什麼throws拋出異常,還要catch接住好麻煩的樣子,通過一個簡單的例子來理解一下。 這裡只是一個簡單的異常條件,園的半徑不可能小於等於0的,如果直接用if判斷然後處 ...
自學到java的異常時,有一些自己的理解,現在總結一下。
1.為什麼要使用異常
剛開始估計很多初學者和我一樣,不理解為什麼要異常,什麼throws拋出異常,還要catch接住好麻煩的樣子,通過一個簡單的例子來理解一下。
package 異常; class Circular { public double area(double radius) { if(radius<=0) { System.out.println("非法數值"); } return 3.14*Math.pow(radius,2); } } public class Second { public static void main(String[] args) { Circular c=new Circular(); System.out.println(c.area(-4)); } }
這裡只是一個簡單的異常條件,園的半徑不可能小於等於0的,如果直接用if判斷然後處理,如果判斷條件很多,處理又很複雜,就會影響代碼的閱讀性,很難在茫茫多的判斷條件中找到正常流程的代碼。所以拋出異常,然後在另外的類catch處理了異常,沒有拋出的就是正常流程,很容易找到正常的流程,又根據異常的不同,很容易在另外的類找到處理方法,提高了代碼的閱讀性。
2.異常的分類
可以看出,java分為2種異常有分別為Error和Exception,2種異常又都是Throwable的子類。Error用來表示嚴重的錯誤,一般是系統或者底層資源的錯誤,如虛擬機錯誤和記憶體溢出是不可控制的,這些錯誤是不可查的,因為它們在應用程式的控制和處理能力之外,而且絕大多數是程式運行時不允許出現的狀況。Exception是一般化應用程式級別的的異常,又分為編譯時的異常和運行時的異常,運行時的異常都屬於RuntimeException。RuntimeException不需要通過try,catch捕獲,必須通過修改代碼來解決。
常見的RuntimeException錯誤
NullPointerException - 空指針引用異常
ClassCastException - 類型強制轉換異常。
IllegalArgumentException - 傳遞非法參數異常。
ArithmeticException - 算術運算異常
ArrayStoreException - 向數組中存放與聲明類型不相容對象異常
IndexOutOfBoundsException - 下標越界異常
NegativeArraySizeException - 創建一個大小為負數的數組錯誤異常
NumberFormatException - 數字格式異常
SecurityException - 安全異常
UnsupportedOperationException - 不支持的操作異常
3.thorws和thorw
thorws用在方法聲明後面,跟的是異常類名,可以跟多個異常類名,用逗號隔開,表示拋出異常,由該方法的調用者來處理。
thorw用在方法體內,跟的是異常對象名,只能拋出一個異常對象名,表示拋出異常,由方法體內的語句處理。
4.Exception(String massage)
Exception(String massage)方法中massage表示錯誤的說明,自定義異常可以繼承這個類,重寫這個方法:
class CustomException extends Exception { CustomException(String massage) { super(magssae); }
這樣創建CustomException(massage)對象,調用toString方法時就可以實現自定義異常名稱和說明瞭。