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

下載本文檔

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

文檔簡介

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

最新文檔

評論

0/150

提交評論