練習(xí)一:異常的體系
問題:
1.請(qǐng)描述異常的繼承體系
2.請(qǐng)描述你對(duì)錯(cuò)誤(Error)的理解
3.請(qǐng)描述你對(duì)異常(Expection的理解)
4.請(qǐng)描述你對(duì)運(yùn)行時(shí)異常(RuntimeException)的理解
答:
1.異常繼承體系為:異常的根類是java.lang.Throwable,其下有兩個(gè)子類:
java.lang.Error與java.util.Exception。而Exception又分為編譯時(shí)期異常:checked異常,與運(yùn)行時(shí)期異常:runtime異常。
2.Error:表示不可修復(fù)的惡性的錯(cuò)誤,只能通過修改代碼規(guī)避錯(cuò)誤的產(chǎn)生,通常是系統(tǒng)級(jí)別的,所以很嚴(yán)重。
3.Exception:表示可修復(fù)的良性(相對(duì)于錯(cuò)誤)的異常,異常產(chǎn)生后程序員可以并且應(yīng)該通過代碼的方式糾正,使程序繼續(xù)運(yùn)行,是必須要處理的。
4.運(yùn)行時(shí)期異常:runtime異常。在運(yùn)行時(shí)期,檢查異常.在編譯時(shí)期,運(yùn)行異常不會(huì)編譯器檢測(cè)(不報(bào)錯(cuò))。
練習(xí)二:throw與throws的區(qū)別
問題:
1.請(qǐng)描述throw的使用位置,作用是什么?
2.請(qǐng)描述throws的使用位置,作用是什么?
答:
1.throw關(guān)鍵字通常用在方法體中,并且拋出一個(gè)異常對(duì)象。程序在執(zhí)行到throw語句時(shí)立即停止,它后面的語句都不執(zhí)行。
2.throws關(guān)鍵字通常被應(yīng)用在聲明方法時(shí),用來指定可能拋出的異常。多個(gè)異??梢允褂枚禾?hào)隔開。當(dāng)在主函數(shù)中調(diào)用該方法時(shí),如果發(fā)生異常,就會(huì)將異常對(duì)象拋給方法調(diào)用處。
練習(xí)三:異常的處理方式
問題:
1.異常處理方式有幾種,分別是什么?
2.詳細(xì)闡述每種方式對(duì)異常是如何處理的
答:
1.異常的處理方式有兩種,分別是使用throws和try…catch…finally
2.throws用在方法的聲明上后接異常類名,是把異常拋給調(diào)用者進(jìn)行處理
3.try…catch…finally是捕獲異常,自己處理,處理完畢后面的程序可以繼續(xù)運(yùn)行
a)try代碼塊中是可能出現(xiàn)異常的代碼
b)catch代碼塊,是遇到異常,對(duì)異常進(jìn)行處理的代碼
c)finally代碼塊是無論是否發(fā)生異常,都必須執(zhí)行的代碼,用于釋放資源.
練習(xí)四:常見異常,及產(chǎn)生原因
問題:請(qǐng)列舉常見異常,并說明產(chǎn)生原因。
答:
NullPointerException:空指針異常。
當(dāng)應(yīng)用試圖在要求使用對(duì)象的地方使用了null時(shí),拋出該異常。譬如:調(diào)用null對(duì)象的實(shí)例方法、訪問null對(duì)象的屬性、計(jì)算null對(duì)象的長度等等。
ArrayIndexOutOfBoundsException:數(shù)組索引越界異常。
當(dāng)對(duì)數(shù)組的索引值為負(fù)數(shù)或大于等于數(shù)組大小時(shí)拋出此異常。
ArithmeticException:算術(shù)運(yùn)算異常。
程序中出現(xiàn)了除以零這樣的運(yùn)算就會(huì)出這樣的異常,對(duì)這種異常,大家就要好好檢查一下自己程序中涉及到數(shù)學(xué)運(yùn)算的地方,公式是不是有不妥了。
NumberFormatException:數(shù)字格式異常。
當(dāng)試圖將一個(gè)String轉(zhuǎn)換為指定的數(shù)字類型,而該字符串確不滿足數(shù)字類型要求的格式時(shí),拋出該異常。
注意:答案不唯一,合理即可。
以上就是長沙牛耳教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“大家經(jīng)常能學(xué)到的Java異常練習(xí)題”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。