一、異常體系樹(shù)

二、Error錯(cuò)誤
描述的是錯(cuò)誤,比如主板燒壞了、網(wǎng)絡(luò)斷了等程序員無(wú)法處理的問(wèn)題
三、Exception異常
描述的是程序上的問(wèn)題,程序員可以通過(guò)嚴(yán)謹(jǐn)?shù)木幋a習(xí)慣和處理,防止異常的發(fā)生
四、檢查性異常
需要指出,檢查性異常雖然是在編碼過(guò)程中報(bào)紅,但是不是語(yǔ)法錯(cuò)誤,需要處理
五、運(yùn)行時(shí)異常
顧名思義,程序編碼過(guò)程中不會(huì)提示,需要到運(yùn)行后才能看到
六、處理異常的方式
1、在方法體中處理
try catch
2、在方法聲明處處理
throws
七、try catch
1、try catch處理時(shí),異常在自己方法內(nèi)部就被處理了,調(diào)用這個(gè)方法的地方壓根感知不到異常的存在
2、try后邊可以接很多catch,要求不能重復(fù)、子類(lèi)異常要寫(xiě)到父類(lèi)異常前邊
3、建議最后放一個(gè)Exception用于兜底
4、執(zhí)行的時(shí)候,會(huì)從上到下選符合異常的類(lèi)型,找到后進(jìn)去執(zhí)行對(duì)應(yīng)的catch塊中的內(nèi)容
八、throws
1、throws處理時(shí),誰(shuí)調(diào)用throws所在的方法,誰(shuí)就會(huì)感知到異常的存在,因此也需要處理,可以選擇try catch或者是throws,當(dāng)然,選擇throws,下一個(gè)調(diào)用它的方法,也需要處理
2、一般認(rèn)為throws是一種不太負(fù)責(zé)的處理方式,因?yàn)橄喈?dāng)于自己沒(méi)處理,而把異常拋出給了調(diào)用它的方法,因此在主方法中不建議throws,這會(huì)把異常拋給jvm,建議在主方法中就try catch
九、異常發(fā)生時(shí)jvm的作用
異常發(fā)生前語(yǔ)句正常執(zhí)行,當(dāng)異常發(fā)生,jvm會(huì)自動(dòng)拋出一個(gè)對(duì)應(yīng)類(lèi)型的異常對(duì)象并打印異常信息,同時(shí)停止執(zhí)行程序,這樣做是為了系統(tǒng)安全因此異常后的語(yǔ)句不會(huì)執(zhí)行
十、try catch的幾種狀態(tài)
try{
①
System.out.println(1/0);
②
}catch(Exception e){
③
}
④
異常種類(lèi)對(duì),①③④可以執(zhí)行
try{
①
System.out.println(1/0);
②
}catch(IndexOutOfBoundsException e){
③
}
④
異常種類(lèi)不對(duì),只有①
try{
①
System.out.println(1/0);
②
}catch(IndexOutOfBoundsException e){
③
}finally{
⑤
}
④
try{
①
System.out.println(1/0);
②
}catch(Exception e){
③
}finally{
⑤
}
④
finally塊不論異常種類(lèi)對(duì)不對(duì)都會(huì)被執(zhí)行,因此finally經(jīng)常應(yīng)用于,程序執(zhí)行后必要的操作,比如資源釋放
也可以不寫(xiě)catch,try后直接跟finally,比如:
try{
①
System.out.println(1/0);
②
}finally{
⑤
}
④
十一、Exception常用方法
構(gòu)造方法
getCause()
getMessage()
getStackTrace()
printStackTrace()
十二、
final、finally、fianlize區(qū)別
fianl可以修飾量、方法、類(lèi)
finally 異常處理塊中最后總要被執(zhí)行的
finalize 垃圾回收機(jī)制
十三、throw
手動(dòng)引發(fā)異常
throw 挑事
throws 平事