Java异常类(Throwable)
一、異常類體系
二、異常類由來與定義
【異常類的由來】:Java把程序在運行時出現(xiàn)的各種不正常情況也看成了對象, 提取屬性和行為進行描述,比如異常名稱,異常信息,異常發(fā)生位置,從而形成了各種異常類【定義】異常是程序在運行期發(fā)生的不正常的事件,它會打斷指令的正常執(zhí)行流程。三、嚴重的異常:錯誤(Error)
此類異常:【一般不用處理】
指JVM系統(tǒng)內(nèi)部錯誤或資源耗盡等【嚴重情況】,屬于JVM需要負擔的責任特點
這一類異常事件一般無法恢復或不可能捕獲
程序(員)不需要處理這類異常,因為是JVM的問題
四、不嚴重的異常:異常(Exception)
此類異常:【一般要處理】
因編程錯誤或偶然的外在因素導致的【一般性問題】
異常處理機制
【拋出異常】:Java程序在執(zhí)行過程中如果出現(xiàn)異常,會自動生成一個異常類對象,該異常對象將被自動提交給JVM,這個過程稱為拋出(throw)異常
【捕獲異常】:當JVM接收到異常對象時,會尋找能處理這一異常的代碼并把當前異常對象交給其處理,這一過程稱為捕獲(catch)異常和處理異常。
如果JVM找不到可以捕獲異常的代碼,則運行時系統(tǒng)將終止,相應的Java程序也將退出。
特點
程序員通常可以處理這類異常得到恰當?shù)奶幚頃r,程序有機會恢復至正常運行狀況從處理的必要性角度分
非受檢(unchecked)異常(運行時)
受檢(checked)異常(非運行時)
非受檢(unchecked)異常(運行時)
編譯器不要求必須處理的異常
一般是指編程時的邏輯錯誤,是程序員應該積極避免其出現(xiàn)的異常
父類:java.lang.RuntimeException
錯誤的類型轉(zhuǎn)換:java.lang.ClassCastException
數(shù)組下標越界:java.lang.ArrayIndexOutOfBoundsException
空指針訪問:java.lang.NullPointerException
算術(shù)異常(除0溢出):java.lang.ArithmeticException
受檢(checked)異常(非運行時)
編譯器要求必須處理的異常
在編譯期間要對其可能出現(xiàn)的異常進行處理
有如下這些類
沒有找到指定名稱的類:java.lang.ClassNotFoundException
訪問不存在的文件:java.io.FileNotFoundException
操作文件時發(fā)生的異常:java.io.IOException
操作數(shù)據(jù)庫時發(fā)生的異常:java.sql.SQLException
異常處理兩種方式
1.捕獲異常
自己解決問題
步驟
一旦產(chǎn)生異常,則首先會產(chǎn)生一個異常類的對象
在try語句中對此異常對象進行捕捉;
產(chǎn)生的異常對象與catch語句中的各個異常類型進行匹配,如果匹配成功,則執(zhí)行catch語句中的代碼。
使用的語句:try{}catch(){}catch(){}finally{}
try 代碼段包含的是可能產(chǎn)生異常的代碼
try 代碼段后可以有0-多個catch代碼段,再跟0-1個finally代碼段
每個catch代碼段只聲明一種其能處理的特定類型的異常,并提供處理的方法。
當異常發(fā)生時,程序會中止當前的流程去執(zhí)行相應的catch代碼段。
若存在finally,finally段的代碼無論是否發(fā)生異常都執(zhí)行,作用:
關(guān)閉打開的文件
刪除臨時文件
關(guān)閉數(shù)據(jù)庫的連接等
只有發(fā)生異常的時候 才會執(zhí)行catch語句
使用多重 catch 語句時,異常子類一定要位于異常父類之前。
getMessage() 方法,用來獲得有關(guān)異常事件的字符串信息。
printStackTrace() 方法,用來跟蹤異常事件發(fā)生時執(zhí)行堆棧的內(nèi)容。
2.拋出異常
自己解決不了,讓調(diào)用者來解決
throw方法 拋出異常類
產(chǎn)生異常拋出異常對象 方法內(nèi)部 只能拋一個異常對象 不能直接拋出受檢異常
throws方法 拋出異常類
方法名后面 可以同時拋多個異常類型 能夠直接拋出受檢異常
throws使用格式:[修飾符] 返回值類型 方法名([形式參數(shù)列表]) [throws 異常類1,異常類2….]{}
注意:
1)如果throw 和 throws 連用,就一定會發(fā)生異常
2)如果想拋出一個產(chǎn)生的受檢異常對象
throw new 異常對象
通過throws在方法名后面 拋出
自定義異常
自定義受檢異常:繼承Exception是受檢異常
自定義非受檢異常:繼承 RuntimException 非受檢異常
總結(jié)
以上是生活随笔為你收集整理的Java异常类(Throwable)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java常用类之String类、Stri
- 下一篇: Java常用类之要点总结