Java異常處理介紹
什么是異常
導(dǎo)致程序的正常流程被中斷的事件,叫做異常。
異常是程序中的一些錯(cuò)誤,并不是所有的錯(cuò)誤都是異常。
異常的分類
可查異常: 可查異常即必須進(jìn)行處理的異常,要么try catch住,要么往外拋,誰調(diào)用,誰處理,如果不處理,編譯器,就不讓你通過
運(yùn)行時(shí)異常: 運(yùn)行時(shí)異常是可能被程序員避免的異常。與可查異常相反,運(yùn)行時(shí)異??梢栽诰幾g時(shí)被忽略。
錯(cuò)誤: 指的是系統(tǒng)級別的異常,通常是內(nèi)存用光了
其中,運(yùn)行時(shí)異常和錯(cuò)誤又叫非可查異常。
Exception 類的層次
所有的異常類是從 java.lang.Exception 類繼承的子類。
Exception 類是 Throwable 類的子類。除了Exception類外,Throwable還有一個(gè)子類Error 。

異常的處理
異常處理常見手段: try-catch throw/throws
先看一下報(bào)異常的
try-catch

再看下沒有報(bào)錯(cuò)的

從結(jié)果中可以看到,在我們使用try-catch的時(shí)候,如果代碼報(bào)了異常,報(bào)錯(cuò)的那行代碼之后的語句都不會(huì)執(zhí)行,它會(huì)進(jìn)入到catch中。
還有一個(gè)關(guān)鍵字finally,無論代碼有沒有報(bào)錯(cuò),它都會(huì)執(zhí)行,所以我們一般會(huì)在finally語句塊里運(yùn)行清理類型等收尾善后性質(zhì)的語句。
throw和throws
1、只使用throw關(guān)鍵字
2、使用throw+try-catch
3、使用throws
throws與throw這兩個(gè)關(guān)鍵字接近,不過意義不一樣,有如下區(qū)別:
throws 出現(xiàn)在方法聲明上,而throw通常都出現(xiàn)在方法體內(nèi)。
一個(gè)方法可以聲明拋出多個(gè)異常,多個(gè)異常之間用逗號隔開。
throws 表示出現(xiàn)異常的一種可能性,并不一定會(huì)發(fā)生這些異常;throw則是拋出了異常,執(zhí)行throw則一定拋出了某個(gè)異常對象。
自定義異常
在 Java 中我們可以自定義異常。
所有異常都必須是 Throwable 的子類。
如果希望寫一個(gè)可查異常類,則需要繼承 Exception 類。
如果你想寫一個(gè)運(yùn)行時(shí)異常類,那么需要繼承 RuntimeException 類。
定義一個(gè)異常類
測試一下