點擊查看:2015計算機等級考試二級Java入門教程章節(jié)匯總
點擊查看:2015計算機等級考試二級Java入門教程第七章匯總
7.5 定義自己的異常
定義自己的異常類有兩個基本的原因:
在標準異常發(fā)生時,希望增加一些信息,那么你叮以重新拋出你自己的異常類對象來完成這項操作。
在你的代碼中利用出現(xiàn)的錯誤狀態(tài)保證特殊異常類的辨別。
然而,你應(yīng)該記住在拋出異常時會產(chǎn)生大量的開銷,因此,對于"正常地"恢復你期望頻繁執(zhí)行的代碼來說,這并不是一種很有效的方法。如果你恢復的代碼要被經(jīng)常地執(zhí)行,就不應(yīng)該把它放置在catch塊中,而是用一個if-then-else循環(huán)。
讓我們看看如何創(chuàng)建自己的異常。
定義一個異常類
在你定義異常類時。一定要把Throwable作為超類,否則是不允許的。雖然你可以從任何的標準異常類中派生出新的異常類,但是最好的策略還是從Exception類派生。這將使得編譯器能夠跟蹤程序中拋出這類異常的位置,檢查它們被捕獲了,還是在一個方法中聲明拋出它。如果你使用RuntimeException或者它的一個子類,編譯器將檢查你的異常類的catch塊是否將被禁止。
讓我們完成一個例子,看看如何定義一個異常類:
public class BreadfulProblemException extends Exception
{
//Constructors
public DreadfulProblemException()( ) //Default constructor
public DreadfulProblemException(String s)
{
super(s); //Call the base class constructor
}
}
這是你應(yīng)該提供的最少代碼。按照慣例,異常類應(yīng)該包括一個默認的構(gòu)造函數(shù)和一個參數(shù)為String對象的構(gòu)造函數(shù)。超類Exception中存儲的信息(事實上,這些信息在Exception的超類Throwable中)將自動地用類名進行初始化,而無論你的類對象使用的是哪一個構(gòu)造函數(shù)。傳遞給第二個構(gòu)造函數(shù)的String將添加到類名的后面形成異常對象中存儲的信息。
當然,你也可以增加一些其他的構(gòu)造函數(shù),通常,你在標準異常拋出后拋出自己的異常時特別希望這樣做。除此之外,最典型的是你想要把實例變量加到存儲問題額外信息的類中,再附加一方法來在catch塊的代碼中獲取這些數(shù)據(jù)。因為你的異常類最終派生于Throwable類,所以它將自動地能夠使用跟蹤棧。
相關(guān)推薦:
2015計算機等級考試二級Java入門教程章節(jié)匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |