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