




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)單元三:數(shù)據(jù)與異常處理程序設(shè)計(jì)單元三:數(shù)據(jù)與異常處理程序設(shè)計(jì) Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 知識(shí)目標(biāo) 理解異常的概念和用途 掌握使用try-catch-finally語(yǔ)句結(jié)構(gòu) 能力目標(biāo) 能夠使用try-catch-finally語(yǔ)句進(jìn)行異常處理 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)4任務(wù)陳述任務(wù)陳述123知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備任務(wù)實(shí)施任務(wù)實(shí)施任務(wù)拓展任務(wù)拓展任務(wù)實(shí)訓(xùn)任務(wù)實(shí)訓(xùn)5 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)任務(wù)描述:任務(wù)描述: 編寫一個(gè)除法計(jì)算器,程序要求在出現(xiàn)除數(shù)為零和除數(shù)、被除數(shù)中有一個(gè)不是數(shù)字的情況時(shí)進(jìn)行相應(yīng)的處理。當(dāng)調(diào)用存放在數(shù)組中的計(jì)算結(jié)
2、果,數(shù)組有可能產(chǎn)生索引越界,對(duì)這種情況進(jìn)行捕捉和處理。 1. 任務(wù)陳述任務(wù)陳述 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備 正常情況下,小王每日開車去上班,耗時(shí)正常情況下,小王每日開車去上班,耗時(shí)大約大約30分鐘分鐘但是,異常情況遲早要發(fā)生!但是,異常情況遲早要發(fā)生!一路暢通一路暢通堵車!堵車!撞車!撞車!生活中的異常生活中的異常 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備 異常就是在程序的運(yùn)行過程中所發(fā)生的不異常就是在程序的運(yùn)行過程中所發(fā)生的不正常的事件,它會(huì)中斷正在運(yùn)行的程序正常的事件,它會(huì)中斷正在運(yùn)行的程序繞行或者等待繞行或者等待請(qǐng)求交警解決請(qǐng)求交警解
3、決異常!異常!面對(duì)異常該怎么辦呢?通常情況下,我們會(huì)這樣面對(duì)異常該怎么辦呢?通常情況下,我們會(huì)這樣處理:處理:程序運(yùn)行程序運(yùn)行程序中斷運(yùn)行程序中斷運(yùn)行堵車!堵車!撞車!撞車!生活中,我們會(huì)根據(jù)不同的異常進(jìn)行相應(yīng)的處理生活中,我們會(huì)根據(jù)不同的異常進(jìn)行相應(yīng)的處理,而不會(huì)就此中斷我們的生活,而不會(huì)就此中斷我們的生活 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備 Java編程語(yǔ)言使用異常處理機(jī)制為程序提編程語(yǔ)言使用異常處理機(jī)制為程序提供了錯(cuò)誤處理的能力供了錯(cuò)誤處理的能力程序中預(yù)先想好了程序中預(yù)先想好了 對(duì)付異常的處理辦法對(duì)付異常的處理辦法 異常!異常! 程序運(yùn)行程序運(yùn)行處理完畢,程序繼
4、續(xù)運(yùn)行處理完畢,程序繼續(xù)運(yùn)行對(duì)異常進(jìn)行處理對(duì)異常進(jìn)行處理什么是異常處理什么是異常處理 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備 Java的異常處理是通過的異常處理是通過5個(gè)關(guān)鍵字來實(shí)現(xiàn)的:個(gè)關(guān)鍵字來實(shí)現(xiàn)的:try、catch、 finally、throw、throws 捕獲異常捕獲異常 catchtryfinally執(zhí)行可能產(chǎn)生執(zhí)行可能產(chǎn)生 異常的代碼異常的代碼 捕獲異常捕獲異常 無論是否發(fā)生異常,無論是否發(fā)生異常,代碼總能執(zhí)行代碼總能執(zhí)行手動(dòng)拋出異常手動(dòng)拋出異常 拋出異常拋出異常 throw聲明異常聲明異常 聲明方法可能要聲明方法可能要拋出的各種異常拋出的各種異常 thr
5、owsJava中如何進(jìn)行異常處理中如何進(jìn)行異常處理 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備方方 法法 名名說說 明明Exception 異常層次結(jié)構(gòu)的根類異常層次結(jié)構(gòu)的根類ArithmeticException算術(shù)錯(cuò)誤情形,如以零作除數(shù)算術(shù)錯(cuò)誤情形,如以零作除數(shù)ArrayIndexOutOfBoundsException數(shù)組下標(biāo)越界數(shù)組下標(biāo)越界NullPointerException嘗試訪問嘗試訪問 null null 對(duì)象成員對(duì)象成員ClassNotFoundException不能加載所需的類不能加載所需的類InputMismatchException欲得到數(shù)據(jù)類型與實(shí)
6、際輸入類型不匹配欲得到數(shù)據(jù)類型與實(shí)際輸入類型不匹配IllegalArgumentException方法接收到非法參數(shù)方法接收到非法參數(shù)ClassCastException對(duì)象強(qiáng)制類型轉(zhuǎn)換出錯(cuò)對(duì)象強(qiáng)制類型轉(zhuǎn)換出錯(cuò)NumberFormatException數(shù)字格式轉(zhuǎn)換異常,如把數(shù)字格式轉(zhuǎn)換異常,如把a(bǔ)bcabc轉(zhuǎn)換成轉(zhuǎn)換成數(shù)字?jǐn)?shù)字 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)僅靠程序本身無法恢僅靠程序本身無法恢復(fù)的嚴(yán)重錯(cuò)誤復(fù)的嚴(yán)重錯(cuò)誤 Exception和和Error類的父類類的父類由由Java應(yīng)用程序拋出應(yīng)用程序拋出和處理的非嚴(yán)重錯(cuò)誤和處理的非嚴(yán)重錯(cuò)誤 運(yùn)行時(shí)異常,不要求程運(yùn)行時(shí)異常,不要求程序必須對(duì)它
7、們做出處理序必須對(duì)它們做出處理 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備 異常分類異常分類 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備trycatch try-catch 塊后的代碼段塊后的代碼段public void method()try / 代碼段代碼段(此處不會(huì)產(chǎn)生異常此處不會(huì)產(chǎn)生異常) catch (異常類型異常類型 ex) / 對(duì)異常進(jìn)行處理的代碼段對(duì)異常進(jìn)行處理的代碼段/ 代碼段代碼段 使用使用try-catch塊捕獲異常,分為三種情況:塊捕獲異常,分為三種情況:第一種情況第一種情況 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備trycatch異常類型匹配異常類型
8、匹配 try-catch 塊后的代碼段塊后的代碼段進(jìn)入進(jìn)入catch塊塊public void method()try / 代碼段代碼段 1 / 產(chǎn)生異常的代碼段產(chǎn)生異常的代碼段 2 / 代碼段代碼段 3 catch (異常類型異常類型 ex) / 對(duì)異常進(jìn)行處理的代碼段對(duì)異常進(jìn)行處理的代碼段4/ 代碼段代碼段5 使用使用try-catch塊捕獲異常,分為三種情況:塊捕獲異常,分為三種情況:第二種情況第二種情況 產(chǎn)生異常對(duì)象產(chǎn)生異常對(duì)象 程序繼續(xù)執(zhí)行程序繼續(xù)執(zhí)行異常是一種特殊的對(duì)象,類型為異常是一種特殊的對(duì)象,類型為java.lang.Exception或其子類或其子類 發(fā)生異常發(fā)生異常 Ja
9、va Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備trycatch異常類型不匹配異常類型不匹配 try-catch 塊后的代碼段塊后的代碼段程序中斷運(yùn)行程序中斷運(yùn)行 發(fā)生異常發(fā)生異常public void method()try / 代碼段代碼段 1 / 產(chǎn)生異常的代碼段產(chǎn)生異常的代碼段 2 / 代碼段代碼段 3 catch (異常類型異常類型 ex) / 對(duì)異常進(jìn)行處理的代碼段對(duì)異常進(jìn)行處理的代碼段4/ 代碼段代碼段5 使用使用try-catch塊捕獲異常,分為三種情況:塊捕獲異常,分為三種情況:第三種情況第三種情況 產(chǎn)生異常對(duì)象產(chǎn)生異常對(duì)象 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2.
10、 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備【例【例3-10】從鍵盤輸入一個(gè)】從鍵盤輸入一個(gè)double類型的數(shù)字。如果類型的數(shù)字。如果給出的不是給出的不是double類型的會(huì)產(chǎn)生異常。類型的會(huì)產(chǎn)生異常。try String str = in.nextLine();double doub = Double.parseDouble(str); catch (NumberFormatException ne) System.out.println(異常異常1:);ne.printStackTrace(); catch (Exception e) System.out.println(異常異常2:);e.printStack
11、Trace(); Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備finally語(yǔ)句語(yǔ)句u不管不管try和和catch語(yǔ)句時(shí)候會(huì)出現(xiàn)異常,語(yǔ)句時(shí)候會(huì)出現(xiàn)異常,finally語(yǔ)句都會(huì)執(zhí)行。語(yǔ)句都會(huì)執(zhí)行。ufinally語(yǔ)句是為異常處理事件提供的一語(yǔ)句是為異常處理事件提供的一個(gè)清理機(jī)制,一般是用來關(guān)閉文件或個(gè)清理機(jī)制,一般是用來關(guān)閉文件或釋放其他系統(tǒng)資源。釋放其他系統(tǒng)資源。 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備 在在try-catch塊后加入塊后加入finally塊,可以確保無論是否塊,可以確保無論是否發(fā)生異常,發(fā)生異常,finally塊中的代碼總能被執(zhí)行塊中的
12、代碼總能被執(zhí)行try 塊塊 finally 塊塊 catch 塊塊 無異常無異常 有異常有異常 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 2. 知識(shí)準(zhǔn)備知識(shí)準(zhǔn)備【例【例3-11】從鍵盤接收一個(gè)整數(shù)數(shù)字,不論發(fā)生】從鍵盤接收一個(gè)整數(shù)數(shù)字,不論發(fā)生異常與否,都會(huì)執(zhí)行異常與否,都會(huì)執(zhí)行finally語(yǔ)句。語(yǔ)句。try System.out.print(輸入一個(gè)正整數(shù):輸入一個(gè)正整數(shù):); Scanner s = new Scanner(System.in); int data = s.nextInt(); catch (Exception e) System.out.println(e); finall
13、y System.out.print(finally 語(yǔ)句塊!語(yǔ)句塊!); Java Java 程序設(shè)計(jì)程序設(shè)計(jì)3.1 3.1 解決步驟解決步驟(1) 打開Eclipse,創(chuàng)建一個(gè)類(2) 在類main方法中輸入兩個(gè)數(shù)相除(3) 給輸入的兩個(gè)數(shù)以及兩個(gè)數(shù)相除會(huì)產(chǎn)生異常,對(duì)這段代碼進(jìn)行異常處理(4) 編寫測(cè)試類,運(yùn)行程序 3. 任務(wù)實(shí)施任務(wù)實(shí)施 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)3.2 3.2 任務(wù)代碼任務(wù)代碼 int result=0,1,2;int oper1=0;int oper2=0;Scanner in = new Scanner(System.in);trySystem.out.p
14、rint(請(qǐng)輸入除數(shù)請(qǐng)輸入除數(shù):);oper1 = in.nextInt(); System.out.print(請(qǐng)輸入被除數(shù)請(qǐng)輸入被除數(shù):);oper2 = in.nextInt(); result2=oper2/oper1;System.out.println(計(jì)算結(jié)果:計(jì)算結(jié)果:+result3); 3. 任務(wù)實(shí)施任務(wù)實(shí)施可能出現(xiàn)問題的代碼可能出現(xiàn)問題的代碼 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)catch (InputMismatchException iee) System.out.println(異常異常1:輸入不為數(shù)字輸入不為數(shù)字!); catch (ArithmeticExcep
15、tion aee) System.out.println(異常異常2:除數(shù)不能為零除數(shù)不能為零!); catch (ArrayIndexOutOfBoundsException aie) System.out.println(異常異常3:數(shù)組索引越界數(shù)組索引越界!);catch (Exception e) System.out.println(其他異常其他異常4:+e.getMessage();finallySystem.out.println(最后要執(zhí)行的內(nèi)容最后要執(zhí)行的內(nèi)容5!); 3. 任務(wù)實(shí)施任務(wù)實(shí)施 Java Java 程序設(shè)計(jì)程序設(shè)計(jì) 3. 任務(wù)拓展任務(wù)拓展 在在catch塊中處理
16、異常塊中處理異常 加入用戶自定義處理信息 調(diào)用異常對(duì)象的方法輸出異常信息e.printStackTrace();System.err.println(出現(xiàn)錯(cuò)誤:被除數(shù)和除數(shù)必須是整數(shù),出現(xiàn)錯(cuò)誤:被除數(shù)和除數(shù)必須是整數(shù), +除數(shù)不能為零。除數(shù)不能為零。);方法名說 明void printStackTrace()輸出異常的堆棧信息輸出異常的堆棧信息String getMessage()返回異常信息描述字符串,返回異常信息描述字符串,是是printStackTrace()printStackTrace()輸出信息的一部分輸出信息的一部分 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)【例例3-12】輸入課程代
17、號(hào)輸入課程代號(hào)1到數(shù)字到數(shù)字3,得到代號(hào)對(duì)應(yīng)的課程。,得到代號(hào)對(duì)應(yīng)的課程。System.out.print(請(qǐng)輸入課程代號(hào)請(qǐng)輸入課程代號(hào)(13之間的數(shù)字之間的數(shù)字):);Scanner in = new Scanner(System.in);try int courseCode = in.nextInt(); catch (Exception ex) System.out.println(輸入不為數(shù)字輸入不為數(shù)字!);ex.printStackTrace(); finally System.out.println(歡迎提出建議歡迎提出建議!); 3. 任務(wù)拓展任務(wù)拓展 Java Java 程序設(shè)計(jì)程序設(shè)計(jì)一、實(shí)訓(xùn)目的一、實(shí)訓(xùn)目的u 掌握掌握J(rèn)ava的異常處理機(jī)制;的異常處理機(jī)制;u 掌握運(yùn)用掌握運(yùn)用try、catch、finally處理異常。處理異常。二、實(shí)訓(xùn)內(nèi)容二、實(shí)訓(xùn)內(nèi)容編寫一個(gè)類編寫一個(gè)類ExceptionTest,在,在main方法中使用方法中使用try、catch、finally:u 在在try塊中,編寫被塊中,編寫被0除的代碼;除的代碼;u 在在catch塊中,捕獲被塊中,捕獲被0除所產(chǎn)生的異常,并且打印異常信息;除所產(chǎn)生的異常,并且打印異常信息;u 在在finally塊中,打印一條語(yǔ)句。塊中,打印一條語(yǔ)句。三、簡(jiǎn)要提示三、簡(jiǎn)要提示在產(chǎn)生、捕獲和處理異常
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025跨國(guó)技術(shù)合作合同協(xié)議
- 外科常見疾病護(hù)理常規(guī)
- 2025年沈陽(yáng)國(guó)際陸港投資建設(shè)發(fā)展有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年山東德州德達(dá)投資控股集團(tuán)有限公司招聘筆試參考題庫(kù)附帶答案詳解
- 2025年方大特鋼科技股份有限公司自動(dòng)化公司招聘筆試參考題庫(kù)含答案解析
- 2025年四川綿陽(yáng)市投資控股(集團(tuán))有限公司招聘筆試參考題庫(kù)含答案解析
- 2025五指山市潭門鎮(zhèn)社區(qū)工作者考試真題
- 2025五指山市番陽(yáng)鎮(zhèn)社區(qū)工作者考試真題
- 2025上饒市信州區(qū)秦峰鎮(zhèn)社區(qū)工作者考試真題
- 2025三明市大田縣屏山鄉(xiāng)社區(qū)工作者考試真題
- 冷卻塔維修施工方案
- 航天發(fā)射場(chǎng)智能化-深度研究
- 信息時(shí)代背景下班主任提升班級(jí)管理工作效率的策略研究
- 旅游業(yè)員工工資保障措施建議
- 班組長(zhǎng)、員工安全生產(chǎn)責(zé)任制考核記錄表
- 老年康體指導(dǎo)職業(yè)教育79課件
- 北京市建設(shè)工程施工現(xiàn)場(chǎng)安全生產(chǎn)標(biāo)準(zhǔn)化管理圖集(2019版)
- 2025年江蘇省江寧城建集團(tuán)招聘筆試參考題庫(kù)含答案解析
- 大學(xué)生就業(yè)與創(chuàng)業(yè)指導(dǎo)知到智慧樹章節(jié)測(cè)試課后答案2024年秋遼寧廣告職業(yè)學(xué)院
- 高鈦渣及其產(chǎn)品深加工項(xiàng)目的可行性研究報(bào)告
- 2024年中國(guó)黃油行業(yè)供需態(tài)勢(shì)及進(jìn)出口狀況分析
評(píng)論
0/150
提交評(píng)論