(1)基本概念
java的異常結構圖
Throwable是所有異常的根,java.lang.Throwable
Error是錯誤挨下,java.lang.Error
Exception是異常,java.lang.Exception
(2)Exception
一般分為Checked異常和Runtime異常埃篓,所有RuntimeException類及其子類的實例被稱為Runtime異常,不屬于該范疇的異常則被稱為CheckedException驾茴。
①Checked異常
只有java語言提供了Checked異常,Java認為Checked異常都是可以被處理的異常氢卡,所以Java程序必須顯示處理Checked異常锈至。如果程序沒有處理Checked異常,該程序在編譯時就會發(fā)生錯誤無法編譯译秦。這體現(xiàn)了Java的設計哲學:沒有完善錯誤處理的代碼根本沒有機會被執(zhí)行峡捡。對Checked異常處理方法有兩種:
a.當前方法知道如何處理該異常,則用try...catch塊來處理該異常诀浪。
b.當前方法不知道如何處理棋返,則在定義該方法時聲明拋出該異常。
我們比較熟悉的Checked異常有
Java.lang.ClassNotFoundException
Java.lang.NoSuchMetodException
java.io.IOException
②RuntimeException
Runtime如除數(shù)是0和數(shù)組下標越界等雷猪,其產(chǎn)生頻繁,處理麻煩晰房,若顯示申明或者捕獲將會對程序的可讀性和運行效率影響很大求摇。所以由系統(tǒng)自動檢測并將它們交給缺省的異常處理程序。當然如果你有處理要求也可以顯示捕獲它們殊者。
我們比較熟悉的RumtimeException類的子類有
Java.lang.ArithmeticException
Java.lang.ArrayStoreExcetpion
Java.lang.ClassCastException
Java.lang.IndexOutOfBoundsException
Java.lang.NullPointerException
(3)Error
當程序發(fā)生不可控的錯誤時与境,通常做法是通知用戶并中止程序的執(zhí)行。與異常不同的是Error及其子類的對象不應被拋出猖吴。
Error是throwable的子類摔刁,代表編譯錯誤和系統(tǒng)錯誤,用于指示合理的應用程序不應該試圖捕獲的嚴重問題海蔽。
Error由Java虛擬機生成并拋出共屈,包括動態(tài)鏈接失敗,虛擬機錯誤等党窜。程序對其不做處理拗引。
更多內(nèi)容請關注微信公眾號
wechat.jpg