為什么不用繼承throwable類(lèi)???
Throwable 類(lèi)是 Java 語(yǔ)言中所有錯(cuò)誤或異常的超類(lèi)。只有當(dāng)對(duì)象是此類(lèi)(或其子類(lèi)之一)的實(shí)例時(shí),才能通過(guò) Java 虛擬機(jī)或者 Java throw 語(yǔ)句拋出
Throwable 類(lèi)是 Java 語(yǔ)言中所有錯(cuò)誤或異常的超類(lèi)。只有當(dāng)對(duì)象是此類(lèi)(或其子類(lèi)之一)的實(shí)例時(shí),才能通過(guò) Java 虛擬機(jī)或者 Java throw 語(yǔ)句拋出
2015-01-22
舉報(bào)
2015-01-31
嗯本來(lái)碼了挺長(zhǎng)一段把自己都繞昏了,但是后來(lái)仔細(xì)看了看你這句話(huà)以后,我發(fā)現(xiàn)幾個(gè)關(guān)鍵點(diǎn)
1-“只有當(dāng)對(duì)象是throwable類(lèi)的實(shí)例時(shí)”
2-“才能拋出”
那么就很簡(jiǎn)單了:)
首先,我們討論的是被拋出的那個(gè)東西必須是throwable類(lèi),在你的問(wèn)題里實(shí)際上也就try-catch語(yǔ)句里的try中拋出的玩意兒
(因?yàn)樗麄兙褪钱惓#?/p>
其次,catch里至少都會(huì)有個(gè) catch(Exception e),也就是說(shuō)被丟給catch的這個(gè)東西是屬于Exeception類(lèi)的
而我剛剛也查過(guò)了,exception是throwable類(lèi)的直子類(lèi)
而目前的例子里沒(méi)有繼承throwable類(lèi)是因?yàn)椴⒉皇?strong>方法自己丟出了異常,而是設(shè)定一個(gè)try語(yǔ)句去監(jiān)視某個(gè)代碼段并用try語(yǔ)句去把一個(gè)異常丟給catch;其區(qū)別差不多就是前者是你自己寫(xiě)了個(gè)方法讓它去試試屎里是否有毒,而后者則是你讓java幫你監(jiān)視方法里的某個(gè)代碼段并讓它一旦發(fā)現(xiàn)屎里有毒就去對(duì)照是否是屬于exception1/2/3進(jìn)行處理
這里的關(guān)鍵字是丟出:如果你希望自己的方法將屎哦不,將異常丟出去,那么肯定就是要繼承這個(gè)throwable的
而至于try-catch嘛……大概就像你一用try的時(shí)候就默認(rèn)這個(gè)try會(huì)試著幫你找毒并把異常自動(dòng)丟給catch,拋出這個(gè)功能它已經(jīng)自帶了,你只用靜坐片刻就能干了那碗熱翔了(* ̄︶ ̄)y?
另外P.S.我也是學(xué)員,也許專(zhuān)業(yè)人士看了我的回答會(huì)覺(jué)得相當(dāng)扯淡,所以我的話(huà)還是最好只信一半:P