




已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
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 請輸入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)行過程中所發(fā)生的不正常的事件 它會(huì)中斷正在運(yùn)行的程序 繞行或者等待 請求交警解決 異常 面對異常該怎么辦呢 通常情況下 我們會(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)換無效 NumberFormatException 不能加載所需的類 ClassNotFoundException 方法接收到非法參數(shù) IllegalArgumentException 數(shù)組大小小于或大于實(shí)際的數(shù)組大小 ArrayIndexOutOfBoundException 嘗試訪問null對象成員 NullPointerException 許多java lang異常的基類 RuntimeException 異常層次結(jié)構(gòu)的根類 Exception 算術(shù)錯(cuò)誤情形 如以零作除數(shù) ArithmeticException 線程中斷 InterruptedException 說明 異常 8 什么是異常處理 Java編程語言使用異常處理機(jī)制為程序提供了錯(cuò)誤處理的能力 程序中預(yù)先想好了對付異常的處理辦法 異常 程序運(yùn)行 處理完畢 程序繼續(xù)運(yùn)行 對異常進(jìn)行處理 9 Java中如何進(jìn)行異常處理 Java的異常處理是通過5個(gè)關(guān)鍵字來實(shí)現(xiàn)的 try catch finally throw throws 捕獲異常 catch try finally 執(zhí)行可能產(chǎn)生異常的代碼 捕獲異常 無論是否發(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 對異常進(jìn)行處理的代碼段 代碼段 使用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塊后的代碼段 進(jìn)入catch塊 publicvoidmethod try 代碼段1 產(chǎn)生異常的代碼段2 代碼段3 catch 異常類型ex 對異常進(jìn)行處理的代碼段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的堆棧跟蹤功能顯示出程序運(yùn)行到當(dāng)前類的執(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塊后的代碼段 程序中斷運(yùn)行 發(fā)生異常 publicvoidmethod try 代碼段1 產(chǎn)生異常的代碼段2 代碼段3 catch 異常類型ex 對異常進(jìn)行處理的代碼段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 程序中斷運(yùn)行 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 對異常進(jìn)行處理的代碼段 catch 異常類型2ex 對異常進(jìn)行處理的代碼段 catch 異常類型3ex 對異常進(jìn)行處理的代碼段 代碼段 多重catch塊2 1 一段代碼可能會(huì)引發(fā)多種類型的異常當(dāng)引發(fā)異常時(shí) 會(huì)按順序來查看每個(gè)catch語句 并執(zhí)行第一個(gè)與異常類型匹配的catch語句執(zhí)行其中的一條catch語句之后 其后的catch語句將被忽略 try 與異常類型1不匹配 try catch塊后的代碼段 發(fā)生異常 產(chǎn)生異常對象 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 請輸入S1的總學(xué)時(shí) inttotalTime in nextInt 總學(xué)時(shí)System out print 請輸入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語句的順序時(shí) 首先應(yīng)該捕獲最特殊的異常 然后再逐漸一般化 即先子類后父類 輸出 輸入不為數(shù)字 進(jìn)入第一個(gè)catch塊 輸入 2700 輸出 課程數(shù)目不能為零 進(jìn)入第二個(gè)catch塊 22 拋出異常 如果在當(dāng)前環(huán)境無法解決一個(gè)異常 就要將其拋出 把異常交給調(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)用者捕獲異常 聲明該方法可能會(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高效節(jié)能電機(jī)項(xiàng)目可行性研究報(bào)告(參考范文)
- 文明工地管理制度
- 2025年濕法稀磷酸項(xiàng)目建議書
- 異步電機(jī)控制策略
- 2025年智能電網(wǎng)配電設(shè)備項(xiàng)目建議書
- 2025年互聯(lián)網(wǎng)醫(yī)療平臺在線問診平臺與患者健康檔案管理對接報(bào)告
- 2025年工業(yè)碳捕獲與封存(CCS)技術(shù)在節(jié)能減排中的應(yīng)用案例研究
- 基于大數(shù)據(jù)的2025年智慧交通流量預(yù)測模型構(gòu)建與分析報(bào)告
- 2025年綠色藥品生產(chǎn)技術(shù)現(xiàn)狀與市場推廣路徑研究報(bào)告
- 城市污水處理廠智能化升級改造中的能源管理優(yōu)化策略報(bào)告
- 自尊主題班會(huì)課件
- 海洋經(jīng)濟(jì)政策效果評估
- 徳龍全自動(dòng)咖啡機(jī)ECAM 22.110.SB 中文使用說明書
- 勞動(dòng)教育與數(shù)學(xué)作業(yè)深度融合 全面培養(yǎng)學(xué)生的勞動(dòng)素養(yǎng)
- 中國質(zhì)譜儀行業(yè)發(fā)展趨勢及發(fā)展前景研究報(bào)告2025-2028版
- 2025至2030中國直聯(lián)式真空泵行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展報(bào)告
- 2025至2030中國無源光分路器行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報(bào)告
- 痛風(fēng)治療與護(hù)理課件
- T/CCBD 19-2022品牌餐廳評價(jià)規(guī)范
- 2025 秋外研英語八上單元重點(diǎn)知識清單Unit 1
- 河南省南陽市內(nèi)鄉(xiāng)縣2025屆數(shù)學(xué)七下期末調(diào)研試題含解析
評論
0/150
提交評論