




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2022/7/231第 6 章 異常處理、遞歸和單體程序設(shè)計(jì)方法2022/7/232本章總體綱要異常處理遞歸方法單體(Singleton)程序設(shè)計(jì)模式2022/7/233Java 異常處理(Exception)基礎(chǔ)異常(Exception)?異常(Exception)是正常程序流程所不能處理或沒有處理的異常情況或異常事件。在有些書中,異常也稱作例外。2022/7/234格式在try語句塊中包含可能會產(chǎn)生異常的語句緊接著若干個(gè)catch語句塊,進(jìn)行異常處理catch語句塊與finally語句塊至少存在一個(gè)try / 可能會拋出異常的代碼catch (ExceptionType ref) / 異常
2、處理代碼finally / 2022/7/235為什么需要異常?強(qiáng)制程序異常/錯(cuò)誤處理同時(shí)指定需要異常的種類異常處理模型提供了一種統(tǒng)一處理異常/錯(cuò)誤的模式傳統(tǒng)程序方法: 設(shè)置標(biāo)志位,或返回錯(cuò)誤碼,分別處理各種異常情況。但在編程時(shí)常常出現(xiàn)這樣的情況:忘了對某些異常情況進(jìn)行處理,尤其是當(dāng)存在多個(gè)分支或者多個(gè)開發(fā)人員共同開發(fā)程序時(shí)。簡化對異常情況的處理,減少if-else語句2022/7/236什么時(shí)候會發(fā)生異常?數(shù)組的下標(biāo)越界打開不存在的文件網(wǎng)絡(luò)無法連接操作數(shù)超出所要求的范圍少了所需加載的類,自定義異常,要求程序處理2022/7/237處理異常的幾種常用方法一旦捕獲異常,馬上進(jìn)行處理重新拋出異常捕
3、獲異常,但并不處理通過語句System.exit()退出應(yīng)用程序2022/7/238異常(Exceptions)類型常見異常內(nèi)存耗盡數(shù)組下標(biāo)越界除數(shù)為0非法的參數(shù)(方法的參數(shù))2022/7/239異常(Exception)的層次結(jié)構(gòu)2022/7/2310運(yùn)行時(shí)發(fā)生的異常(RuntimeExceptions)異常隨時(shí)都可以發(fā)生ArrayIndexOutOfBoundsExceptionNullPointerException定義了引用,但不指向任何對象(object)ClassCastException數(shù)據(jù)類型間的轉(zhuǎn)換不合法良好的編程習(xí)慣,可以減少很多異常的發(fā)生2022/7/2311受檢異常和非
4、受檢異常受檢異常必須在方法聲明時(shí)通過throws列出在編譯時(shí)就能被檢測出非受檢測異常不必在throws列表中錯(cuò)誤(Errors) 和運(yùn)行時(shí)異常(RuntimeExceptions)受檢異常,必須處理才能通過編譯運(yùn)行時(shí)異常只有在運(yùn)行時(shí)才能被發(fā)現(xiàn)錯(cuò)誤常常指的是致命性錯(cuò)誤,常常也無法處理2022/7/2312處理多種異常(Exception)類型如果含有多外catch語句塊,則異常會被第一個(gè)與其相匹配的catch語句塊處理2022/7/2313finally 語句塊在異常處理過程中,finally 語句塊總是會被執(zhí)行到: 無論有沒有異常發(fā)生,也無論有沒有異常被捕捉到可選項(xiàng): finally 語句塊,
5、通常位于catch 語句塊的后面可以用來釋放try語句塊中獲得的資源例如,關(guān)閉在try語句塊中打開的文件2022/7/2314throws 列表在方法的聲明處列出所有的受檢異常返回類型 方法名( 參數(shù)列表 ) throws 異常類型1, 異常類型2, / 方法體在本方法內(nèi)就可以不處理這些異常調(diào)用該方法的方法就必須處理這些異常示例:public static void g( ) throws Exception throw new Exception( ); / 方法g結(jié)束2022/7/2315異常處理: 捕捉-或者-聲明如果一個(gè)方法調(diào)用一個(gè)拋出受檢異常的方法(含有throws列表的方法),則該
6、方法必須捕捉這些受檢異常,或通過throws列表聲明這些異常2022/7/2316重新拋出異常如果catch語句塊不處理某種異常,可以重新拋出異常拋出異常的方法: throw e; 由其外層的try- catch 語句塊處理2022/7/2317本章總體綱要異常處理遞歸方法單體(Singleton)程序設(shè)計(jì)模式2022/7/2318遞歸如果在方法定義中直接或間接地調(diào)用該方法本身,就稱為遞歸2022/7/2319漢諾塔(Tower of Hanoi)問題有三根柱子:S、T和E柱子S上套著n個(gè)盤,小盤依次在大盤上面現(xiàn)在要求:每次只能將一根柱子最上面的一個(gè)盤移動(dòng)到另一根柱子上不允許將大盤放在小盤上面
7、只能利用這三根柱子將在柱子S上的n個(gè)盤移動(dòng)到柱子E上2022/7/2320示例/ J_Hanoi.java; 開發(fā)者: 雍俊海/ 利用遞歸求解漢諾塔(Tower of Hanoi)問題的例程。public class J_Hanoi public static void mb_hanoi(int n, char start, char temp, char end) if (n=1) System.out.println(將盤從 + start + 移到 + end); else mb_hanoi(n-1, start, end, temp); System.out.println(將盤從 +
8、 start + 移到 + end); mb_hanoi(n-1, temp, start, end); / if-else結(jié)構(gòu)結(jié)束 / 方法mb_hanoi結(jié)束 public static void main(String args ) mb_hanoi(3, S, T, E); / 方法main結(jié)束 / 類J_Hanoi結(jié)束2022/7/2321編譯、運(yùn)行 & 結(jié)果2022/7/2322本章總體綱要異常處理遞歸方法單體(Singleton)程序設(shè)計(jì)模式2022/7/2323單體程序設(shè)計(jì)模式要讓一個(gè)類只能有一個(gè)實(shí)例對象2022/7/2324示例/ J_Singleton.java; 開發(fā)者:
9、 雍俊海/ 單體類實(shí)現(xiàn)例程。public class J_Singleton private static J_Singleton m_object = new J_Singleton( ); / 定義構(gòu)造方法: 不允許自行創(chuàng)建這個(gè)類的實(shí)例對象 private J_Singleton( ) / J_Singleton構(gòu)造方法結(jié)束 / 返回單體實(shí)例對象的引用 public static J_Singleton mb_getObject( ) return m_object; / 方法mb_getObject結(jié)束 / 類J_Singleton結(jié)束2022/7/2325示例/ J_Singleton
10、.java; 開發(fā)者: 雍俊海/ 單體類實(shí)現(xiàn)例程。public class J_Singleton private static J_Singleton m_object = new J_Singleton( ); / 定義構(gòu)造方法: 不允許自行創(chuàng)建這個(gè)類的實(shí)例對象 private J_Singleton( ) / J_Singleton構(gòu)造方法結(jié)束 / 返回單體實(shí)例對象的引用 public static J_Singleton mb_getObject( ) return m_object; / 方法mb_getObject結(jié)束 / 類J_Singleton結(jié)束2022/7/2326編譯、運(yùn)
11、行 & 結(jié)果2022/7/2327單體類Runtimepublic class Runtime private static Runtime currentRuntime = new Runtime( ); public static Runtime getRuntime( ) return currentRuntime; /* Dont let anyone else instantiate this class */ private Runtime( ) / . .2022/7/2328類java.lang.Runtime的成員方法public static Runtime getRunt
12、ime( )public int availableProcessors( )public Process exec(String command) throws IOExceptionpublic void gc( )public long freeMemory( )public long totalMemory( )public long maxMemory( )2022/7/2329作業(yè)習(xí)題6.4習(xí)題6.52022/7/2330本課件使用要求使用本課件,必須注明引用(具體見下一個(gè)幻燈片)書及課件均可能出現(xiàn)一些錯(cuò)誤和缺陷,懇切希望廣大讀者特別是講授此課程的老師批評指正2022/7/2331
13、引用聲明本課件來源于(或參考了)下面的書及其課件:雍俊海. Java程序設(shè)計(jì)教程. 北京: 清華大學(xué)出版社, 2007.2022/7/2332免責(zé)聲明請合法使用課件,其用途應(yīng)當(dāng)合法有益而且不應(yīng)對任何人造成任何傷害或損失同時(shí)請注意教材作者及出版社沒有對本課件作出任何承諾與保證2022/7/2333參考文獻(xiàn)本課件的參考文獻(xiàn)與下面書的參考文獻(xiàn)相同雍俊海. Java程序設(shè)計(jì)教程. 北京: 清華大學(xué)出版社, 2007.雍俊海. Java程序設(shè)計(jì)習(xí)題集(含參考答案). 北京: 清華大學(xué)出版社, 2006. 雍俊海. Java程序設(shè)計(jì). 北京: 清華大學(xué)出版社, 2004.2022/7/2334雍俊海編寫過
14、的教材和教參雍俊海. 計(jì)算機(jī)動(dòng)畫算法與編程基礎(chǔ). 北京: 清華大學(xué)出版社. 2008. 雍俊海. Java程序設(shè)計(jì). 北京: 清華大學(xué)出版社. 2008. 雍俊海. Java程序設(shè)計(jì)教程(第2版). 北京: 清華大學(xué)出版社. 2007. 雍俊海. Java程序設(shè)計(jì)習(xí)題集(含參考答案). 北京: 清華大學(xué)出版社, 2006. 雍俊海. Java程序設(shè)計(jì). 北京: 清華大學(xué)出版社. 2004. 2022/7/2335雍俊海編寫過的教材和教參雍俊海. 計(jì)算機(jī)動(dòng)畫算法與編程基礎(chǔ). 北京: 清華大學(xué)出版社. 2008.2022/7/2336雍俊海編寫過的教材和教參雍俊海. Java程序設(shè)計(jì). 北京: 清華大學(xué)出版社,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030中國EPDM和SBR顆粒行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 2025-2030年畜牧產(chǎn)業(yè)市場發(fā)展分析及前景趨勢與投資戰(zhàn)略研究報(bào)告
- 2025-2030年殯葬服務(wù)產(chǎn)業(yè)深度調(diào)研及行業(yè)發(fā)展趨勢與投資戰(zhàn)略研究報(bào)告
- 2025-2030年無線遙控器市場前景分析及投資策略與風(fēng)險(xiǎn)管理研究報(bào)告
- 2025-2030年手表行業(yè)市場深度調(diào)研及前景趨勢與投資研究報(bào)告
- 家用電器采購進(jìn)銷存管理服務(wù)協(xié)議
- 環(huán)保產(chǎn)業(yè)參股合作協(xié)議范本
- 房地產(chǎn)項(xiàng)目財(cái)務(wù)預(yù)算與成本控制合同
- 文化創(chuàng)意產(chǎn)業(yè)園區(qū)廠房租賃權(quán)轉(zhuǎn)售合同
- 房屋征收安置補(bǔ)償合同范本
- 青島市 主要片區(qū) 項(xiàng)目 拆遷補(bǔ)償方案 鏈接
- 病例報(bào)告表(CRF)模板
- Q∕GDW 11612.2-2018 低壓電力線高速載波通信互聯(lián)互通技術(shù)規(guī)范 第2部分:技術(shù)要求
- 國家開放大學(xué)《生活方式與常見疾病預(yù)防》形考任務(wù)1-4參考答案
- 第三章_采場頂板活動(dòng)規(guī)律
- 數(shù)字PID控制器設(shè)計(jì)制作.答案
- DR曝光參考條件
- 濰柴發(fā)動(dòng)機(jī)WD615系列分解圖冊
- 年中轉(zhuǎn)100萬噸水泥中轉(zhuǎn)站項(xiàng)目可行性研究報(bào)告模板
- 宣恩水利水產(chǎn)局
- 辦公室面積整改方案
評論
0/150
提交評論