官术网_书友最值得收藏!

5.5 創(chuàng)建異常類

需要拋出異常的類型時,可以選擇使用由別人編寫的異常(Java平臺提供了許多可以使用的異常類),或者使用自己編寫的異常類。在做出抉擇的時候,先考慮以下問題:

· 你需要一個Java平臺中沒有的異常類型嗎?

· 用戶能夠區(qū)分你的異常與由其他供應(yīng)商編寫的類拋出的異常嗎?

· 你的代碼是否拋出不止一個相關(guān)的異常?

· 如果使用他人的異常,那么用戶是否可以訪問這些異常?

如果對上面任何問題的回答都是“是”,就應(yīng)該編寫自己的異常類;否則,建議使用現(xiàn)有的異常類。

5.5.1 一個創(chuàng)建異常類的例子

假設(shè)正在寫一個鏈表類,該類支持以下方法:

· objectAt(int n):返回列表中第n個位置的對象。如果參數(shù)小于0或大于當(dāng)前列表中的對象數(shù),就拋出異常。

· firstObject():返回列表中的第一個對象。如果列表不包含對象,就拋出異常。

· indexOf(Object o):搜索指定對象的列表,并返回其在列表中的位置。如果傳入方法的對象不在列表中,就拋出異常。

鏈表類可以拋出多個異常,使用一個異常處理程序捕獲鏈表所拋出的所有異常是很方便的。同時,所有相關(guān)代碼都應(yīng)打包在一起。因此,鏈表應(yīng)該提供自己的一組異常類。

圖5-3給出了鏈表拋出異常的一個可能的類層次結(jié)構(gòu)。

圖5-3 類層次結(jié)構(gòu)

5.5.2 選擇超類

任何Exception子類都可以用作LinkedListException的父類。然而,這些子類有些是專用的,有些又與LinkedListException完全無關(guān)。因此,LinkedListException的父類應(yīng)該是Exception。

開發(fā)人員大多數(shù)情況下所編寫的應(yīng)用程序都會拋出Exception對象。Error通常用于系統(tǒng)中嚴(yán)重的硬錯誤,開發(fā)人員一般不做捕獲。

主站蜘蛛池模板: 浦县| 夹江县| 中阳县| 高陵县| 交口县| 德州市| 重庆市| 新巴尔虎左旗| 商洛市| 逊克县| 岱山县| 许昌县| 永登县| 观塘区| 曲沃县| 怀仁县| 津南区| 四川省| 芒康县| 平遥县| 咸阳市| 新野县| 阿坝| 敖汉旗| 丹江口市| 安乡县| 福鼎市| 焉耆| 新巴尔虎右旗| 迭部县| 依安县| 水富县| 调兵山市| 和硕县| 扬中市| 布拖县| 河曲县| 镇远县| 嘉荫县| 博客| 光泽县|