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