異常的分類:
Throwable是根接口报破。
Error和Exception繼承這個(gè)接口 跃须。
Error是無(wú)法處理的異常,比如OutOfMemoryError球榆,一般發(fā)生這種異常朽肥,JVM會(huì)選擇終止程序。因此我們編寫程序時(shí)不需要關(guān)心這類異常持钉。
Exception衡招,也就是我們經(jīng)常見(jiàn)到的一些異常情況,這些異常是我們可以處理的異常每强,是所有異常類的父類始腾。
RuntimeException和checked exception(受査異常也稱非運(yùn)行時(shí)異常)繼承Exception
unchecked Exception(非受査異常),包括Error和RuntimeException空执,比如常見(jiàn)的NullPointerException浪箭、IndexOutOfBoundsException。對(duì)于RuntimeException脆烟,java編譯器不要求必須進(jìn)行異常捕獲處理或者拋出 聲明山林,由程序員自行決定。
checked exception(受查異常),也稱非運(yùn)行時(shí)異常(運(yùn)行時(shí)異常以外的異常就是非運(yùn)行時(shí)異常)驼抹,由代 碼能力之外的因素導(dǎo)致的運(yùn)行時(shí)錯(cuò)誤桑孩。java編譯器強(qiáng)制程序員必須進(jìn)行捕獲處理,比如常見(jiàn)的有IOExeption 和SQLException框冀。如果不進(jìn)行捕獲或者拋出聲明處理流椒,編譯都不會(huì)通過(guò)。
處理機(jī)制:
捕獲機(jī)制:try-catch-finally
try-監(jiān)控區(qū)域明也,執(zhí)行可能產(chǎn)生異常的代碼
catch-捕獲宣虾,處理異常
finally-善后處理,無(wú)論是否發(fā)生異常温数,代碼總能執(zhí)行
拋出異常:throw 手動(dòng)拋出異常
聲明異常:throws 聲明方法可能要拋出的異常
throw:手動(dòng)拋出異常绣硝,一般由程序員在方法內(nèi)拋出Exception的子類異常。
throws:聲明在方法名之后撑刺,告訴調(diào)用者鹉胖,該方法可能會(huì)拋出異常,也就是說(shuō)異常發(fā)生后會(huì)拋給調(diào)用者够傍,由 調(diào)用者處理異常甫菠。
請(qǐng)寫出5種常見(jiàn)到的runtime exception
常見(jiàn)的幾種如下:
NullPointerException - 空指針引用異常
ClassCastException - 類型強(qiáng)制轉(zhuǎn)換異常。
IllegalArgumentException - 傳遞非法參數(shù)異常冕屯。
ArithmeticException - 算術(shù)運(yùn)算異常
ArrayStoreException - 向數(shù)組中存放與聲明類型不兼容對(duì)象異常
IndexOutOfBoundsException - 下標(biāo)越界異常
NegativeArraySizeException - 創(chuàng)建一個(gè)大小為負(fù)數(shù)的數(shù)組錯(cuò)誤異常
NumberFormatException - 數(shù)字格式異常
SecurityException - 安全異常
UnsupportedOperationException - 不支持的操作異常