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ā)人員一般不做捕獲。
- Visual FoxPro程序設(shè)計教程
- 實戰(zhàn)低代碼
- PHP網(wǎng)絡(luò)編程學(xué)習(xí)筆記
- Interactive Applications Using Matplotlib
- Python貝葉斯分析(第2版)
- 新一代SDN:VMware NSX 網(wǎng)絡(luò)原理與實踐
- Procedural Content Generation for C++ Game Development
- R數(shù)據(jù)科學(xué)實戰(zhàn):工具詳解與案例分析
- Building Serverless Web Applications
- QlikView Unlocked
- Web前端開發(fā)最佳實踐
- 3D Printing Designs:Octopus Pencil Holder
- 系統(tǒng)分析師UML用例實戰(zhàn)
- GO語言編程從入門到實踐
- 計算機軟件項目實訓(xùn)指導(dǎo)