《Java大學(xué)教程》—第15章 異常
自測(cè)題:
1. 什么是異常?P357
異常是在程序生命周期內(nèi)出現(xiàn)的事件,它會(huì)導(dǎo)致程序行為不可靠。
2. 已檢查異常和未檢查異常的區(qū)別是什么?P359
在編譯器允許程序被編譯通過(guò)前,要求程序員必須編寫代碼,告訴編譯器如何處理由特定指令產(chǎn)生的已檢查異常。
但是編譯器對(duì)可能產(chǎn)生的未檢查異常并不認(rèn)為存在潛在的錯(cuò)誤可能,也就不會(huì)要求程序員必須編寫代碼處理,只是希望程序員在編寫代碼時(shí)就盡量避免出現(xiàn)這類異常。
已檢查異常:FileNotFoundException, IOException, Exception
未檢查異常:NegativeArraySizeException, NumberFormatException, ArrayIndexOutOfBoundsException, RuntimeException
3.
a) 拋出異常:P357 每種導(dǎo)致異常的事件類型都對(duì)應(yīng)Java中一個(gè)預(yù)定義的異常類。當(dāng)出現(xiàn)某個(gè)事件時(shí),Java運(yùn)行環(huán)境就會(huì)判斷出現(xiàn)異常的類型,
并且生成一個(gè)該異常類的對(duì)象。這個(gè)過(guò)程稱為拋出(throwing)異常。
b) 聲明異常:P361 是指為給定的方法做一個(gè)標(biāo)記,含義是該方法可能會(huì)生成一個(gè)異常類的對(duì)象。
c) 捕捉異常:P364 在某個(gè)位置可以控制異常對(duì)象,而不是僅僅拋出它們。在Java中,這個(gè)過(guò)程稱為捕捉異常(catching an exception)。
4. finally語(yǔ)句的作用是什么?P367
無(wú)論try程序塊中發(fā)生任何情況,都希望在程序終止運(yùn)行前執(zhí)行一些特別的指令,處理一些清理工作,因此就需要在try...catch程序塊的最后部分聲明finally程序塊。
5.
a) 不會(huì)編譯錯(cuò)誤
b) Integer.parseInt()和arrayIn[posIn]會(huì)拋出異常
c) 輸入字母,導(dǎo)致NumberFormatException;輸入超過(guò)數(shù)組邊界的數(shù)會(huì)導(dǎo)致ArrayIndexOutOfBoundsException。
6. 什么情況下需要定義自己的異常類?P378,P380
從構(gòu)造函數(shù)中報(bào)告錯(cuò)誤的唯一方法是使用異常。但是拋出異常通用異常對(duì)象方法使程序無(wú)法通過(guò)名稱知道問(wèn)題的原因,
還需要借助于getMessage方法來(lái)補(bǔ)充信息;并且用于處理特定異常對(duì)象的catch語(yǔ)句卻將捕捉所有被拋出的異常,
因?yàn)樗械漠惓6际菑耐ㄓ卯惓n?Exception)派生的。為了希望使用與處理構(gòu)造函數(shù)異常不同的方式來(lái)處理其他異常,
因此就得創(chuàng)建自己的異常類。
編程練習(xí):代碼附件
1. ExceptionQ5.java
2.
a) ScannerTester.java
b) EasyScannerPlus.java
c) EasyScannerPlusTester.java
3. Hostel.java, ObjectList.java, Payment.java, PaymentList.java, Tenant.java, TenantList.java, NegativeSizeException.java
posted on 2016-09-03 22:46 zYx.Tom 閱讀(269) 評(píng)論(0) 編輯 收藏 所屬分類: 1.Java世界