java異常處理課件.ppt_第1頁(yè)
java異常處理課件.ppt_第2頁(yè)
java異常處理課件.ppt_第3頁(yè)
java異常處理課件.ppt_第4頁(yè)
java異常處理課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1 異常處理 2 目標(biāo) 理解異常的概念運(yùn)用try塊 catch塊和finally塊處理異常運(yùn)用多重catch塊處理異常運(yùn)用嵌套try catch塊處理異常運(yùn)用關(guān)鍵字throw和throws處理異常運(yùn)用JAVA編寫和使用自定義異常 3 生活中的異常 正常情況下 但是 異常情況遲早要發(fā)生 一路暢通 堵車 撞車 4 程序中的異常 publicclassHelloAccp publicstaticvoidmain String args System out print 請(qǐng)輸入1至3之間的數(shù)字 Scannerin newScanner System in intcourseCode in nextInt 從鍵盤輸入整數(shù)switch courseCode case1 System out println C 編程 break case2 System out println Java編程 break case3 System out println SQL基礎(chǔ) 輸入 1輸出 C 編程 輸入 abc程序中斷運(yùn)行 正常情況 異常情況 5 什么是異常 異常就是在程序的運(yùn)行過(guò)程中所發(fā)生的不正常的事件 它會(huì)中斷正在運(yùn)行的程序 繞行或者等待 請(qǐng)求交警解決 異常 面對(duì)異常該怎么辦呢 通常情況下 我們會(huì)這樣處理 程序運(yùn)行 程序中斷運(yùn)行 堵車 撞車 生活中 我們會(huì)根據(jù)不同的異常進(jìn)行相應(yīng)的處理 而不會(huì)就此中斷我們的生活 6 Exception ArithmeticException NullPointerException Object Throwable Error ThreadDeath SQLException RuntimeException NumberFormatException 異常類的層次結(jié)構(gòu) Throwable具有兩個(gè)子類 它們是Exception 處理用戶程序應(yīng)當(dāng)捕獲的異常情況Error Error類的異常為內(nèi)部錯(cuò)誤 因此在正常情況下不期望用戶的程序捕獲它們 AWTError 7 Java異常類 文件結(jié)束 EOFException 找不到文件 FileNotFoundException I O異常的根類 IOException 數(shù)字轉(zhuǎn)化格式異常 比如字符串到float型數(shù)字的轉(zhuǎn)換無(wú)效 NumberFormatException 不能加載所需的類 ClassNotFoundException 方法接收到非法參數(shù) IllegalArgumentException 數(shù)組大小小于或大于實(shí)際的數(shù)組大小 ArrayIndexOutOfBoundException 嘗試訪問null對(duì)象成員 NullPointerException 許多java lang異常的基類 RuntimeException 異常層次結(jié)構(gòu)的根類 Exception 算術(shù)錯(cuò)誤情形 如以零作除數(shù) ArithmeticException 線程中斷 InterruptedException 說(shuō)明 異常 8 什么是異常處理 Java編程語(yǔ)言使用異常處理機(jī)制為程序提供了錯(cuò)誤處理的能力 程序中預(yù)先想好了對(duì)付異常的處理辦法 異常 程序運(yùn)行 處理完畢 程序繼續(xù)運(yùn)行 對(duì)異常進(jìn)行處理 9 Java中如何進(jìn)行異常處理 Java的異常處理是通過(guò)5個(gè)關(guān)鍵字來(lái)實(shí)現(xiàn)的 try catch finally throw throws 捕獲異常 catch try finally 執(zhí)行可能產(chǎn)生異常的代碼 捕獲異常 無(wú)論是否發(fā)生異常 代碼總能執(zhí)行 手動(dòng)拋出異常 拋出異常 throw 聲明異常 聲明方法可能要拋出的各種異常 throws 10 異常處理塊的一般形式 try 要監(jiān)控錯(cuò)誤的代碼塊 catch Exceptione Exceptione的異常處理程序 finally 在try結(jié)束前要執(zhí)行的代碼塊 11 try catch塊 try catch try catch塊后的代碼段 publicvoidmethod try 代碼段 此處不會(huì)產(chǎn)生異常 catch 異常類型ex 對(duì)異常進(jìn)行處理的代碼段 代碼段 使用try catch塊捕獲異常 分為三種情況 第一種情況 12 try catch塊7 2 使用示例模擬第一種情況 publicclassAccpException publicstaticvoidmain String args System out print 請(qǐng)輸入1至3之間的數(shù)字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 編程 break case2 System out println Java編程 break case3 System out println SQL基礎(chǔ) catch Exceptionex System out println 輸入不為數(shù)字 System out println 歡迎提出建議 輸入 2 Java編程歡迎提出建議 控制臺(tái)輸出 13 try catch塊 try catch 異常類型匹配 try catch塊后的代碼段 進(jìn)入catch塊 publicvoidmethod try 代碼段1 產(chǎn)生異常的代碼段2 代碼段3 catch 異常類型ex 對(duì)異常進(jìn)行處理的代碼段4 代碼段5 使用try catch塊捕獲異常 分為三種情況 第二種情況 產(chǎn)生異常對(duì)象 程序繼續(xù)執(zhí)行 異常是一種特殊的對(duì)象 類型為java lang Exception或其子類 發(fā)生異常 14 try catch塊7 4 使用示例模擬第二種情況 publicclassAccpException publicstaticvoidmain String args System out print 請(qǐng)輸入1至3之間的數(shù)字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 編程 break case2 System out println Java編程 break case3 System out println SQL基礎(chǔ) catch Exceptionex System out println 輸入不為數(shù)字 ex printStackTrace System out println 歡迎提出建議 輸入 abc 輸入不為數(shù)字 異常堆棧信息歡迎提出建議 控制臺(tái)輸出 15 printStackTrace的堆棧跟蹤功能顯示出程序運(yùn)行到當(dāng)前類的執(zhí)行流程 publicclassAccpException publicstaticvoidmain String args System out print 請(qǐng)輸入課程代號(hào) 1至3之間的數(shù)字 Scannerin newScanner System in try intcourseCode in nextInt 此處代碼省略 catch Exceptionex System out println 輸入不為數(shù)字 ex printStackTrace System out println 歡迎提出建議 try catch塊 16 try catch塊 try catch 異常類型不匹配 try catch塊后的代碼段 程序中斷運(yùn)行 發(fā)生異常 publicvoidmethod try 代碼段1 產(chǎn)生異常的代碼段2 代碼段3 catch 異常類型ex 對(duì)異常進(jìn)行處理的代碼段4 代碼段5 使用try catch塊捕獲異常 分為三種情況 第三種情況 產(chǎn)生異常對(duì)象 17 try catch塊7 7 使用示例模擬第三種情況 publicclassAccpException2 publicstaticvoidmain String args System out print 請(qǐng)輸入課程代號(hào) 1至3之間的數(shù)字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 編程 break case2 System out println Java編程 break case3 System out println SQL基礎(chǔ) catch NullPointerExceptionex System out println 輸入不為數(shù)字 System out println 歡迎提出建議 輸入 abc 程序中斷運(yùn)行 18 try catch finally 在try catch塊后加入finally塊 可以確保無(wú)論是否發(fā)生異常 finally塊中的代碼總能被執(zhí)行 try塊 finally塊 catch塊 無(wú)異常 有異常 19 try catch finally2 2 publicclassAccpException3 publicstaticvoidmain String args System out print 請(qǐng)輸入1至3之間的數(shù)字 Scannerin newScanner System in try intcourseCode in nextInt switch courseCode case1 System out println C 編程 break case2 System out println Java編程 break case3 System out println SQL基礎(chǔ) catch Exceptionex System out println 輸入不為數(shù)字 finally System out println 歡迎提出建議 輸入 2 Java編程歡迎提出建議 控制臺(tái)輸出 輸入 abc 輸入不為數(shù)字 歡迎提出建議 第一種情況 無(wú)異常 第二種情況 有異常 20 publicvoidmethod try 代碼段 產(chǎn)生異常 異常類型2 catch 異常類型1ex 對(duì)異常進(jìn)行處理的代碼段 catch 異常類型2ex 對(duì)異常進(jìn)行處理的代碼段 catch 異常類型3ex 對(duì)異常進(jìn)行處理的代碼段 代碼段 多重catch塊2 1 一段代碼可能會(huì)引發(fā)多種類型的異常當(dāng)引發(fā)異常時(shí) 會(huì)按順序來(lái)查看每個(gè)catch語(yǔ)句 并執(zhí)行第一個(gè)與異常類型匹配的catch語(yǔ)句執(zhí)行其中的一條catch語(yǔ)句之后 其后的catch語(yǔ)句將被忽略 try 與異常類型1不匹配 try catch塊后的代碼段 發(fā)生異常 產(chǎn)生異常對(duì)象 catch 與異常類型2匹配 catch catch 程序繼續(xù)執(zhí)行 進(jìn)入catch塊 21 多重catch塊2 2 publicclassAccpException4 publicstaticvoidmain String args Scannerin newScanner System in try System out print 請(qǐng)輸入S1的總學(xué)時(shí) inttotalTime in nextInt 總學(xué)時(shí)System out print 請(qǐng)輸入S1的課程數(shù)目 inttotalCourse in nextInt 課程數(shù)目System out println S1各課程的平均學(xué)時(shí)為 totalTime totalCourse catch InputMismatchExceptione1 System out println 輸入不為數(shù)字 catch ArithmeticExceptione2 System out println 課程數(shù)目不能為零 catch Exceptione System out println 發(fā)生錯(cuò)誤 e getMessage 輸入 270H 在安排catch語(yǔ)句的順序時(shí) 首先應(yīng)該捕獲最特殊的異常 然后再逐漸一般化 即先子類后父類 輸出 輸入不為數(shù)字 進(jìn)入第一個(gè)catch塊 輸入 2700 輸出 課程數(shù)目不能為零 進(jìn)入第二個(gè)catch塊 22 拋出異常 如果在當(dāng)前環(huán)境無(wú)法解決一個(gè)異常 就要將其拋出 把異常交給調(diào)用者處理 publicclassAccpTeacher privateStringid 教員編號(hào) 長(zhǎng)度應(yīng)為7publicvoidsetId StringpId 判斷教員編號(hào)的長(zhǎng)度是否為7if pId length 7 id pId else thrownewIllegalArgumentException 參數(shù)長(zhǎng)度應(yīng)為7 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 拋出異常 捕獲異常 參數(shù)長(zhǎng)度應(yīng)為7 控制臺(tái)輸出 23 聲明異常 publicclassAccpTeacher privateStringid 教員編號(hào) 長(zhǎng)度應(yīng)為7publicvoidsetId StringpId throwsIllegalArgumentException 判斷教員編號(hào)的長(zhǎng)度是否為7if pId length 7 id pId else thrownewIllegalArgumentException 參數(shù)長(zhǎng)度應(yīng)為7 publicclassAccpTeacherTest publicstaticvoidmain String args AccpTeacherteacher newAccpTeacher try teacher setId 088 catch IllegalArgumentExceptionex System out println ex getMessage 由調(diào)用者捕獲異常 聲明該方法可能會(huì)產(chǎn)生異常 24 用戶自定義異常 自定義異常概念使用自定義異常的時(shí)候JavaAPI提供的內(nèi)置異常不一定總能捕獲程序中發(fā)生的所有錯(cuò)誤 有時(shí)會(huì)需要?jiǎng)?chuàng)建用戶自定義異常自定義異常需要繼承Exception及其子類 25 用戶自定義異常 創(chuàng)建一個(gè)類繼承Exception或其子類為該異常類添加構(gòu)造方法在一個(gè)方法中使用throw拋出異常在另一個(gè)方法中捕獲并處理異常 classMyExceptionextendsException privateinti MyException inta i a publicStringtoString returni 大于10啦 26 用戶自定義異常2 3 publicclassExceptionDemo staticvoidgo inta throwsMyException System out println a a if a 10 thrownewMyException a System out println 正常結(jié)束 publicstatic

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論