小編給大家分享一下throwable類有什么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

publicclassThrowableextendsObjectimplementsjava.io.SerializableThrowable類是Java語(yǔ)言中所有錯(cuò)誤或異常的超類。只有當(dāng)對(duì)象是此類(或其子類之一)的實(shí)例時(shí),才能通過(guò)Java虛擬機(jī)或者Javathrow語(yǔ)句拋出。類似地,只有此類或其子類之一才可以是catch子句中的參數(shù)類型。
throwable子類
兩個(gè)子類的實(shí)例,Error和Exception,通常用于指示發(fā)生了異常情況。通常,這些實(shí)例是在異常情況的上下文中新近創(chuàng)建的,因此包含了相關(guān)的信息(比如堆棧跟蹤數(shù)據(jù))。
Throwable包含了其線程創(chuàng)建時(shí)線程執(zhí)行堆棧的快照。它還包含了給出有關(guān)錯(cuò)誤更多信息的消息字符串。最后,它還可以包含cause(原因):另一個(gè)導(dǎo)致此throwable拋出的throwable。此cause設(shè)施在1.4版本中首次出現(xiàn)。它也稱為異常鏈設(shè)施,因?yàn)閏ause自身也會(huì)有cause,依此類推,就形成了異常鏈,每個(gè)異常都是由另一個(gè)異常引起的。
throwable性質(zhì)
導(dǎo)致throwable可能具有cause的一個(gè)原因是,拋出它的類構(gòu)建在低層抽象的基礎(chǔ)上,從而高層操作由于低層操作的失敗而失敗。因此讓低層拋出的throwable向外傳播并非一種好的設(shè)計(jì)方法,因?yàn)樗ǔEc高層提供的抽象不相關(guān)。此外,這樣做會(huì)將高層API與其實(shí)現(xiàn)細(xì)節(jié)關(guān)聯(lián)起來(lái),并認(rèn)為低層異常是經(jīng)過(guò)檢查的異常。拋出“經(jīng)過(guò)包裝的異常”(即包含cause的異常)允許高層與其調(diào)用方交流失敗詳細(xì)信息,而不會(huì)招致上述任何一個(gè)缺點(diǎn)。這種方式保留了改變高層實(shí)現(xiàn)而不改變其API的靈活性(尤其是,異常集合通過(guò)其方法拋出)。
導(dǎo)致throwable可能具有cause的另一個(gè)原因是,拋出它的方法必須符合不允許方法直接拋出cause的通用接口。例如,假定持久集合符合Collection接口,而其持久性在java.io的基礎(chǔ)上實(shí)現(xiàn)。假定put方法的內(nèi)部可以拋出IOException。實(shí)現(xiàn)可以與其調(diào)用方交流IOException的詳細(xì)消息,同時(shí)通過(guò)以一種合適的未檢查的異常來(lái)包裝IOException,使其符合Collection接口。(持久集合的規(guī)范應(yīng)該指示它能夠拋出這種異常。)
Cause可以通過(guò)兩種方式與throwable關(guān)聯(lián)起來(lái):通過(guò)一個(gè)將cause看作參數(shù)的構(gòu)造方法;或者通過(guò)initCause(Throwable)方法。對(duì)于那些希望將cause與其關(guān)聯(lián)起來(lái)的新throwable類,應(yīng)該提供帶有cause的構(gòu)造方法,并委托(可能間接)給一個(gè)帶有cause的Throwable構(gòu)造方法。
以上是“throwable類有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
本文題目:throwable類有什么用-創(chuàng)新互聯(lián)
分享網(wǎng)址:http://www.chinadenli.net/article4/djogoe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷、全網(wǎng)營(yíng)銷推廣、企業(yè)網(wǎng)站制作、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)