異常定義:運(yùn)行期間出現(xiàn)的錯(cuò)誤晒杈,而不是編譯時(shí)的語(yǔ)法錯(cuò)誤算柳。
異常體系結(jié)構(gòu)
Error類:特指應(yīng)用程序在運(yùn)行期間發(fā)生的嚴(yán)重錯(cuò)誤蹄梢。內(nèi)存用盡呢铆,堆棧溢出
Exception類:RuntimeException運(yùn)行時(shí)異常(非檢查性異常)編譯時(shí)不會(huì)報(bào)錯(cuò)胁镐,運(yùn)行時(shí)才會(huì)報(bào)錯(cuò)
IOException為代表的一些為檢查性異常歉甚。指的是在編譯時(shí)是否檢查撰豺,如果存在檢查性異常蹬铺,必須進(jìn)行異常處理越平,否則不通過(guò)編譯昌跌。
異常處理機(jī)制
兩種處理方式:
- 自行處理:將可能引發(fā)異常的語(yǔ)句封裝在try塊內(nèi)仰禀,而處理異常的相應(yīng)語(yǔ)句則封入在catch塊內(nèi)。
- 回避異常:在方法聲明中包含throws子句避矢,通知潛在調(diào)用者悼瘾,如果發(fā)生異常,由調(diào)用者處理
catch捕獲異常范圍由小到大
finally語(yǔ)句不管異常捕獲與否都執(zhí)行审胸,用來(lái)進(jìn)行資源的清除(在try或catch中執(zhí)行system.exit(0)時(shí)亥宿,finally不執(zhí)行)
throws關(guān)鍵字
位置:參數(shù)列表的后面
throws關(guān)鍵字后邊,可以跟多個(gè)異常砂沛,中間用問(wèn)號(hào)隔開(kāi)
throws拋出的異常烫扼,由調(diào)用該函數(shù)的函數(shù)處理
throw語(yǔ)句不能單獨(dú)使用,要么和throws要么和try碍庵。映企。catch
自定義異常
繼承Exception類