java第06講-異常處理、遞歸和單體程序設(shè)計(jì)方法_第1頁(yè)
java第06講-異常處理、遞歸和單體程序設(shè)計(jì)方法_第2頁(yè)
java第06講-異常處理、遞歸和單體程序設(shè)計(jì)方法_第3頁(yè)
java第06講-異常處理、遞歸和單體程序設(shè)計(jì)方法_第4頁(yè)
java第06講-異常處理、遞歸和單體程序設(shè)計(jì)方法_第5頁(yè)
已閱讀5頁(yè),還剩35頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、2022/7/231第 6 章 異常處理、遞歸和單體程序設(shè)計(jì)方法2022/7/232本章總體綱要異常處理遞歸方法單體(Singleton)程序設(shè)計(jì)模式2022/7/233Java 異常處理(Exception)基礎(chǔ)異常(Exception)?異常(Exception)是正常程序流程所不能處理或沒(méi)有處理的異常情況或異常事件。在有些書(shū)中,異常也稱(chēng)作例外。2022/7/234格式在try語(yǔ)句塊中包含可能會(huì)產(chǎn)生異常的語(yǔ)句緊接著若干個(gè)catch語(yǔ)句塊,進(jìn)行異常處理catch語(yǔ)句塊與finally語(yǔ)句塊至少存在一個(gè)try / 可能會(huì)拋出異常的代碼catch (ExceptionType ref) / 異常

2、處理代碼finally / 2022/7/235為什么需要異常?強(qiáng)制程序異常/錯(cuò)誤處理同時(shí)指定需要異常的種類(lèi)異常處理模型提供了一種統(tǒng)一處理異常/錯(cuò)誤的模式傳統(tǒng)程序方法: 設(shè)置標(biāo)志位,或返回錯(cuò)誤碼,分別處理各種異常情況。但在編程時(shí)常常出現(xiàn)這樣的情況:忘了對(duì)某些異常情況進(jìn)行處理,尤其是當(dāng)存在多個(gè)分支或者多個(gè)開(kāi)發(fā)人員共同開(kāi)發(fā)程序時(shí)。簡(jiǎn)化對(duì)異常情況的處理,減少if-else語(yǔ)句2022/7/236什么時(shí)候會(huì)發(fā)生異常?數(shù)組的下標(biāo)越界打開(kāi)不存在的文件網(wǎng)絡(luò)無(wú)法連接操作數(shù)超出所要求的范圍少了所需加載的類(lèi),自定義異常,要求程序處理2022/7/237處理異常的幾種常用方法一旦捕獲異常,馬上進(jìn)行處理重新拋出異常捕

3、獲異常,但并不處理通過(guò)語(yǔ)句System.exit()退出應(yīng)用程序2022/7/238異常(Exceptions)類(lèi)型常見(jiàn)異常內(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定義了引用,但不指向任何對(duì)象(object)ClassCastException數(shù)據(jù)類(lèi)型間的轉(zhuǎn)換不合法良好的編程習(xí)慣,可以減少很多異常的發(fā)生2022/7/2311受檢異常和非

4、受檢異常受檢異常必須在方法聲明時(shí)通過(guò)throws列出在編譯時(shí)就能被檢測(cè)出非受檢測(cè)異常不必在throws列表中錯(cuò)誤(Errors) 和運(yùn)行時(shí)異常(RuntimeExceptions)受檢異常,必須處理才能通過(guò)編譯運(yùn)行時(shí)異常只有在運(yùn)行時(shí)才能被發(fā)現(xiàn)錯(cuò)誤常常指的是致命性錯(cuò)誤,常常也無(wú)法處理2022/7/2312處理多種異常(Exception)類(lèi)型如果含有多外catch語(yǔ)句塊,則異常會(huì)被第一個(gè)與其相匹配的catch語(yǔ)句塊處理2022/7/2313finally 語(yǔ)句塊在異常處理過(guò)程中,finally 語(yǔ)句塊總是會(huì)被執(zhí)行到: 無(wú)論有沒(méi)有異常發(fā)生,也無(wú)論有沒(méi)有異常被捕捉到可選項(xiàng): finally 語(yǔ)句塊,

5、通常位于catch 語(yǔ)句塊的后面可以用來(lái)釋放try語(yǔ)句塊中獲得的資源例如,關(guān)閉在try語(yǔ)句塊中打開(kāi)的文件2022/7/2314throws 列表在方法的聲明處列出所有的受檢異常返回類(lèi)型 方法名( 參數(shù)列表 ) throws 異常類(lèi)型1, 異常類(lèi)型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、方法必須捕捉這些受檢異常,或通過(guò)throws列表聲明這些異常2022/7/2316重新拋出異常如果catch語(yǔ)句塊不處理某種異常,可以重新拋出異常拋出異常的方法: throw e; 由其外層的try- catch 語(yǔ)句塊處理2022/7/2317本章總體綱要異常處理遞歸方法單體(Singleton)程序設(shè)計(jì)模式2022/7/2318遞歸如果在方法定義中直接或間接地調(diào)用該方法本身,就稱(chēng)為遞歸2022/7/2319漢諾塔(Tower of Hanoi)問(wèn)題有三根柱子:S、T和E柱子S上套著n個(gè)盤(pán),小盤(pán)依次在大盤(pán)上面現(xiàn)在要求:每次只能將一根柱子最上面的一個(gè)盤(pán)移動(dòng)到另一根柱子上不允許將大盤(pán)放在小盤(pán)上面

7、只能利用這三根柱子將在柱子S上的n個(gè)盤(pán)移動(dòng)到柱子E上2022/7/2320示例/ J_Hanoi.java; 開(kāi)發(fā)者: 雍俊海/ 利用遞歸求解漢諾塔(Tower of Hanoi)問(wèn)題的例程。public class J_Hanoi public static void mb_hanoi(int n, char start, char temp, char end) if (n=1) System.out.println(將盤(pán)從 + start + 移到 + end); else mb_hanoi(n-1, start, end, temp); System.out.println(將盤(pán)從 +

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é)束 / 類(lèi)J_Hanoi結(jié)束2022/7/2321編譯、運(yùn)行 & 結(jié)果2022/7/2322本章總體綱要異常處理遞歸方法單體(Singleton)程序設(shè)計(jì)模式2022/7/2323單體程序設(shè)計(jì)模式要讓一個(gè)類(lèi)只能有一個(gè)實(shí)例對(duì)象2022/7/2324示例/ J_Singleton.java; 開(kāi)發(fā)者:

9、 雍俊海/ 單體類(lèi)實(shí)現(xiàn)例程。public class J_Singleton private static J_Singleton m_object = new J_Singleton( ); / 定義構(gòu)造方法: 不允許自行創(chuàng)建這個(gè)類(lèi)的實(shí)例對(duì)象 private J_Singleton( ) / J_Singleton構(gòu)造方法結(jié)束 / 返回單體實(shí)例對(duì)象的引用 public static J_Singleton mb_getObject( ) return m_object; / 方法mb_getObject結(jié)束 / 類(lèi)J_Singleton結(jié)束2022/7/2325示例/ J_Singleton

10、.java; 開(kāi)發(fā)者: 雍俊海/ 單體類(lèi)實(shí)現(xiàn)例程。public class J_Singleton private static J_Singleton m_object = new J_Singleton( ); / 定義構(gòu)造方法: 不允許自行創(chuàng)建這個(gè)類(lèi)的實(shí)例對(duì)象 private J_Singleton( ) / J_Singleton構(gòu)造方法結(jié)束 / 返回單體實(shí)例對(duì)象的引用 public static J_Singleton mb_getObject( ) return m_object; / 方法mb_getObject結(jié)束 / 類(lèi)J_Singleton結(jié)束2022/7/2326編譯、運(yùn)

11、行 & 結(jié)果2022/7/2327單體類(lèi)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類(lèi)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本課件使用要求使用本課件,必須注明引用(具體見(jiàn)下一個(gè)幻燈片)書(shū)及課件均可能出現(xiàn)一些錯(cuò)誤和缺陷,懇切希望廣大讀者特別是講授此課程的老師批評(píng)指正2022/7/2331

13、引用聲明本課件來(lái)源于(或參考了)下面的書(shū)及其課件:雍俊海. Java程序設(shè)計(jì)教程. 北京: 清華大學(xué)出版社, 2007.2022/7/2332免責(zé)聲明請(qǐng)合法使用課件,其用途應(yīng)當(dāng)合法有益而且不應(yīng)對(duì)任何人造成任何傷害或損失同時(shí)請(qǐng)注意教材作者及出版社沒(méi)有對(duì)本課件作出任何承諾與保證2022/7/2333參考文獻(xiàn)本課件的參考文獻(xiàn)與下面書(shū)的參考文獻(xiàn)相同雍俊海. Java程序設(shè)計(jì)教程. 北京: 清華大學(xué)出版社, 2007.雍俊海. Java程序設(shè)計(jì)習(xí)題集(含參考答案). 北京: 清華大學(xué)出版社, 2006. 雍俊海. Java程序設(shè)計(jì). 北京: 清華大學(xué)出版社, 2004.2022/7/2334雍俊海編寫(xiě)過(guò)

14、的教材和教參雍俊海. 計(jì)算機(jī)動(dòng)畫(huà)算法與編程基礎(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雍俊海編寫(xiě)過(guò)的教材和教參雍俊海. 計(jì)算機(jī)動(dòng)畫(huà)算法與編程基礎(chǔ). 北京: 清華大學(xué)出版社. 2008.2022/7/2336雍俊海編寫(xiě)過(guò)的教材和教參雍俊海. Java程序設(shè)計(jì). 北京: 清華大學(xué)出版社,

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論