Throwable java中所有異常的父類
派生兩個(gè)子類,Error和Exception
try-catch
try{…}用于檢測(cè)異常
jvm
- 1:當(dāng)運(yùn)行str.length()時(shí)發(fā)現(xiàn)string 是null
- 2:jvm實(shí)例化了一個(gè)NullPointerException的實(shí)例
- 3:將程序執(zhí)行過(guò)程的詳細(xì)信息設(shè)置到該異常實(shí)例中
- 4:將其在string.length()這個(gè)位置拋出該異常實(shí)例
- 5:查看出錯(cuò)的方法string.length()是否被try語(yǔ)句包含
- 6:如果沒(méi)有被try語(yǔ)句包含,jvm會(huì)將該異常向string.length()所在的方法之外拋出若拋出到main方法之外,那么該程序終止
- 7:若被try語(yǔ)句包圍,順序調(diào)用try下面的catch查看哪個(gè)catch可以捕獲該異常,若有則進(jìn)入catch內(nèi)部來(lái)執(zhí)行處理代碼的片段,否則和第6步相同
finally應(yīng)該是發(fā)生在異常捕獲的最后一步,寫在最后一個(gè)catch之后
finally是無(wú)條件執(zhí)行的,不管有沒(méi)有出錯(cuò),都會(huì)執(zhí)行
finally可以寫在try下面,不關(guān)注異常的解決,必須得執(zhí)行finally。
throw
1:異常不應(yīng)該在當(dāng)前代碼中處理
2:程序出現(xiàn)非語(yǔ)法錯(cuò)誤,但是不滿足業(yè)務(wù)邏輯
throws
就是丑話說(shuō)前面
main方法不要寫throws!
1:重寫方法是可以不throws拋出任何異常
2:可以拋出父類部分異常
3:可以拋出父類拋出的異常的子類異常
FileNotFoundException是IOException的子類
1:不允許拋出額外異常
2:不允許拋出父類拋出異常的父類異常
自定義異常