他們具有一個(gè)共同的父類 Throwable ??
而 Throwable 有兩個(gè)子類繼承了此類奋救,一個(gè)為error 一個(gè)為Exception ?
error的錯(cuò)誤級(jí)別是 ?虛擬機(jī)級(jí)別的 ?也就是我們是無法進(jìn)行處理的 ?所以探討的異常處理只針對(duì)于Exception的子類。
java的異常分為運(yùn)行時(shí)異常和編譯時(shí)異常
常見的運(yùn)行時(shí)異常包括 ?NullofPointException ? ? ArrayofIndexException 和ClassCaseException
編譯時(shí)異常常見的有 IO的異常 ?SQL的異常 ?
自定義異常:
如果你想自定義一個(gè)異常類,有兩個(gè)情況航厚,
1:如果定義的是一個(gè)編譯時(shí)異常類, 那么他需要繼承于Exception類
2:如果定義的是一個(gè)運(yùn)行時(shí)異常類锰蓬,那么它需要繼承自RunTimeException類
Try Catch Throw 和Throws 和差別
try catch ?是作用于代碼塊的 ?是自己解決 如果catch 能夠抓住(類型匹配)這個(gè)異常幔睬。那么程序不會(huì)崩潰,可以繼續(xù)執(zhí)行之后的代碼芹扭, Throws是 作用于方法的麻顶,如果一個(gè)方法的后面跟著一個(gè)Throws 那就代表這個(gè)方法可能會(huì)拋出后面的一些異常,而throw ?是用來拋出一個(gè)實(shí)際的new出來的異常舱卡,就像形式參數(shù) 和實(shí)際參數(shù)一樣的差別辅肾。
并且throws是將異常定義,如果誰 調(diào)用此方法 必須提供解決的方案轮锥, 如果最終調(diào)用此方法的是main 且main也并不做處理 而是繼續(xù)選擇throws ?那么就會(huì)拋給虛擬機(jī)矫钓,虛擬機(jī)的處理方式就是 打印出錯(cuò)誤 并終止代碼。
關(guān)于return 和finally的
不管有多少個(gè)return ?finally總是會(huì)在try catch finally三連的終止前運(yùn)行交胚,?
如果想讓finally不運(yùn)行份汗,當(dāng)然 這是沒必要的盈电, ?可以在前面執(zhí)行的代碼中執(zhí)行System.exit(0):
退出虛擬機(jī)蝴簇。