查看匯總:2014年計(jì)算機(jī)二級(jí)考試JAVA考點(diǎn)解析匯總
\"異常\"指的是程序運(yùn)行時(shí)出現(xiàn)的非正常情況。在用傳統(tǒng)的語(yǔ)言編程時(shí),程序員只能通過(guò)函數(shù)的返回值來(lái)發(fā)出錯(cuò)誤信息。這易于導(dǎo)致很多錯(cuò)誤,因?yàn)樵诤芏嗲闆r下需要知道錯(cuò)誤產(chǎn)生的內(nèi)部細(xì)節(jié)。通常,用全局變量errno來(lái)存儲(chǔ)\"異常\"的類型。這容易導(dǎo)致誤用,因?yàn)橐粋(gè)errno的值有可能在被處理?reg;前被另外的錯(cuò)誤覆蓋掉。即使最優(yōu)美的C語(yǔ)言程序,為了處理\"異常\"情況,也常求助于goto語(yǔ)句。Java對(duì)\"異常\"的處理是面向?qū)ο蟮。一個(gè)Java的Exception是一個(gè)描述\"異常\"情況的對(duì)象。當(dāng)出現(xiàn)\"異常\"情況時(shí),一個(gè)Exception對(duì)象就產(chǎn)生了,并放到產(chǎn)生這個(gè)\"異常\"的成員函數(shù)里。
基礎(chǔ)
Java的\"異常\"處理是通過(guò)5個(gè)關(guān)鍵詞來(lái)實(shí)現(xiàn)的:try,catch,throw,throws和finally。用try來(lái)執(zhí)行一段程序,如果出現(xiàn)\"異常\",系統(tǒng)拋出(throws?copy;一個(gè)\"異常\",你可以通過(guò)它的類型來(lái)捕捉(catch?copy;它,或最后(finally?copy;由缺省處理器來(lái)處理。下面是\"異常\"處理程序的基本形式:try{//程序塊}catch(ExceptionType1e){//對(duì)ExceptionType1的處理}catch(ExceptionType2e){//對(duì)ExceptionType2的處理throw(e);//再拋出這個(gè)\"異常\"}finally{}
\"異常\"的類型
在\"異常\"類層次的最上層有一個(gè)單獨(dú)的類叫做Throwable。這個(gè)類用來(lái)表示所有的\"異常\"情況。每個(gè)\"異常\"類型都是Throwable的子類。Throwable有兩個(gè)直接的子類。一類是Exception,是用戶程序能夠捕捉到的\"異常\"情況。我們將通過(guò)產(chǎn)生它的子類來(lái)創(chuàng)建自己的\"異常\"。另一類是Error,它定義了那?copy;通常無(wú)法捕捉到的\"異常\"。要謹(jǐn)慎使用Error子類,因?yàn)樗鼈兺ǔ?huì)導(dǎo)致災(zāi)難性的失敗。在Exception中有一個(gè)子類RuntimeException,它是程序運(yùn)行時(shí)自動(dòng)地對(duì)某?copy;錯(cuò)誤作出反應(yīng)而產(chǎn)生的。
不捕捉\"異常\"
\"異常\"對(duì)象是Java在運(yùn)行時(shí)對(duì)某?copy;\"異常\"情況作出反應(yīng)而產(chǎn)生的。例如,下面這個(gè)小程序包含一個(gè)整數(shù)被0除的\"異常\"。
classExc0{publicstaticvoidmain(Stringargs[]){intd=0;inta=42/d;}}
當(dāng)Java執(zhí)行這個(gè)除法時(shí),由于分母是0,就會(huì)構(gòu)造一個(gè)\"異常\"對(duì)象來(lái)使程序停下來(lái)并處理這個(gè)錯(cuò)誤情況,在運(yùn)行時(shí)\"拋出\"(throw?copy;這個(gè)\"異常\"。說(shuō)\"拋出\"是因?yàn)樗笠粋(gè)滾燙的馬鈴薯,你必須把它抓住并立即處理。程序流將會(huì)在除號(hào)操作符處被打斷,然后檢查當(dāng)前的調(diào)用堆棧來(lái)查找\"異常\"。一個(gè)\"異常\"處理器是用來(lái)立即處理\"異常\"情況的。在這個(gè)例子里,我們沒(méi)有編一個(gè)\"異常\"處理器,所以缺省的處理器就發(fā)揮作用了。缺省的處理器打印Exception的字符?reg;值和發(fā)生\"異常\"的地點(diǎn)。
相關(guān)推薦:
2014年計(jì)算機(jī)等級(jí)考試過(guò)關(guān)技巧
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |