Java程序設(shè)計任務(wù)驅(qū)動式教程 任務(wù)十三 防患于未然捕獲并處理異常PPT課件_第1頁
Java程序設(shè)計任務(wù)驅(qū)動式教程 任務(wù)十三 防患于未然捕獲并處理異常PPT課件_第2頁
Java程序設(shè)計任務(wù)驅(qū)動式教程 任務(wù)十三 防患于未然捕獲并處理異常PPT課件_第3頁
Java程序設(shè)計任務(wù)驅(qū)動式教程 任務(wù)十三 防患于未然捕獲并處理異常PPT課件_第4頁
Java程序設(shè)計任務(wù)驅(qū)動式教程 任務(wù)十三 防患于未然捕獲并處理異常PPT課件_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、129目錄任務(wù)一 搭建環(huán)境(構(gòu)建Java集成開發(fā)環(huán)境)任務(wù)二 Java歡迎你(開發(fā)簡單Java應(yīng)用程序任務(wù)三 小試牛刀(學(xué)習(xí)Java語言基礎(chǔ))任務(wù)四 挑戰(zhàn)選擇(使用分支控制流程)任務(wù)五 游戲人生(使用循環(huán)控制流程)任務(wù)六 回歸自然(創(chuàng)建、使用類和對象)任務(wù)七 3G時代的消息傳遞(定義和使用類方法)任務(wù)八 保護你的隱私(封裝的使用)任務(wù)九 子承父業(yè)(繼承和多態(tài)的使用)任務(wù)十 上帝萬能之手(接口的使用)第1頁/共29頁229任務(wù)十一 用數(shù)組存儲信息(使用數(shù)組)任務(wù)十二 使用字符串進行交流(使用字符串)任務(wù)十三 防患于未然(捕獲并處理異常)任務(wù)十四 主動出擊(拋出異常)任務(wù)十五 認識Java App

2、let(Applet入門)任務(wù)十六 豐富多彩的Applet(在Applet中播放聲音和顯示圖像)任務(wù)十七 進入Windows世界(設(shè)計圖形用戶界面)任務(wù)十八 布局規(guī)劃(使用布局管理器)任務(wù)十九 事件委托處理(如何處理事件)任務(wù)二十 選擇之道(使用選擇控件和選擇事件)目錄第2頁/共29頁329任務(wù)二十一 簡明清晰的菜單(使用菜單和其他常用事件)任務(wù)二十二 訪問數(shù)據(jù)(使用JDBC連接數(shù)據(jù)庫)任務(wù)二十三 訪問數(shù)據(jù)升級(數(shù)據(jù)庫編程)任務(wù)二十四 文件管理(目錄與文件管理)任務(wù)二十五 順序進出之道(文件的順序訪問)任務(wù)二十六 隨機進出之道(文件的隨機訪問)任務(wù)二十七 JAVA的分身術(shù)(創(chuàng)建和啟動線程)任務(wù)

3、二十八 線程的生命周期與優(yōu)先級(線程的狀態(tài)與調(diào)度)任務(wù)二十九 基于連接的通信(Java中的套接字Socket)任務(wù)三十 基于無連接的通信(Java中的數(shù)據(jù)報編程)目錄第3頁/共29頁429任務(wù)十三 防患于未然(捕獲并處理異常) 21知識目標知識目標能力目標能力目標什么是異常;如何進行異常處理;異常處理的關(guān)鍵字;異常處理結(jié)構(gòu)。 掌握Java的異常處理機制;運用 try、catch、finally 處理異常。 第4頁/共29頁529內(nèi)容提要4跟我做:跟我做:捕獲并處理異常捕獲并處理異常 1235實現(xiàn)方案實現(xiàn)方案 代碼分析代碼分析 必備知識必備知識 動手做一做動手做一做 第5頁/共29頁62913.

4、1 跟我做:捕獲并處理異常 n任務(wù)情景編寫除法計算器程序。當除數(shù)為零時,產(chǎn)生異常。當輸入除數(shù)、被除數(shù)其中有一個不是數(shù)字時,也產(chǎn)生異常。當調(diào)用存放在數(shù)組中的計算結(jié)果,數(shù)組索引越界,也產(chǎn)生異常。n運行結(jié)果第1章目錄第6頁/共29頁72913.2 實現(xiàn)方案 n問題分析從鍵盤輸入一個整型數(shù)字可以使用java.util.Scanner的nextInt ()方法。Scanner in = new Scanner(System.in);int i = in.nextInt();但在程序運行時,會產(chǎn)生很多意想不到的輸入問題,如輸入數(shù)中出現(xiàn)了字母、特殊符號等,程序無法正確運行下去。本任務(wù)采用異常捕獲和處理技術(shù)保

5、證程序的健壯性。第1章目錄第7頁/共29頁82913.2 實現(xiàn)方案 n解決步驟1.打開Eclipse,在study項目中創(chuàng)建包com.task13,再確定類名CalculateException,得到類的框架。package com. task13;public class CalculateException/* * param args */public static void main(String args) / TODO Auto-generated method stub2.將/ TODO Auto-generated method stub替換成:int result=0,1,2

6、;int operand1=0;int operand2=0;3.接著輸入代碼:Scanner in = new Scanner(System.in);try /詳細實現(xiàn)代碼參見13.3 catch (InputMismatchException ie) /詳細實現(xiàn)代碼參見13.3 4.導(dǎo)入java.util.Scanner和java.util.InputMismatchException后,運行程序。第1章目錄第8頁/共29頁929n程序代碼package com.task13;import java.util.InputMismatchException;import java.util.

7、Scanner;/* * CalculateException.java * 實現(xiàn)try/catch */public class CalculateException /* * param args */public static void main(String args) int result=0,1,2;int operand1=0;int operand2=0;Scanner in = new Scanner(System.in);trySystem.out.print(請輸入除數(shù):);operand1 = in.nextInt(); System.out.print(請輸入被除數(shù):

8、);operand2 = in.nextInt(); result2=operand2/operand1;System.out.println(計算結(jié)果:+result3); catch (InputMismatchException ie) System.out.println(異常:輸入不為數(shù)字!); catch (ArithmeticException ae) System.out.println(異常:除數(shù)不能為零!); catch (ArrayIndexOutOfBoundsException aie) System.out.println(異常:數(shù)組索引越界!);catch (Ex

9、ception e) System.out.println(其他異常:+e.getMessage();第1章目錄13.3 代碼分析 第9頁/共29頁1029n 應(yīng)用擴展 如果在程序運行后,要求無論產(chǎn)生異常,還是不產(chǎn)生異常,都要顯示“歡迎使用計算機器”,則需要在 try catch 后,增加finally。增加的代碼為: finallySystem.out.println(歡迎使用計算機器!); 13.3 代碼分析 第10頁/共29頁112913.4 必備知識 13.4.1 異常的概念在Java程序編寫中,通過編譯,能夠發(fā)現(xiàn)很多錯誤,但有些問題只能在程序運行的時候才能發(fā)現(xiàn)。一旦問題出現(xiàn),程序?qū)⒔K

10、止,返回到操作系統(tǒng)。異常就是在程序的運行過程中所發(fā)生的不正常的事件,它會中斷正在運行的程序。例如,除數(shù)為零、數(shù)組下標越界、需要的文件找不到等,程序都會出現(xiàn)異常。例如,當給int類型變量b賦值0后,執(zhí)行到c=a/b;語句時,就會出現(xiàn)異常,因為數(shù)學(xué)中規(guī)定除數(shù)為能為零。異常信息如圖13-2。第1章目錄第11頁/共29頁122913.4 必備知識 圖中的異常信息表示,產(chǎn)生了“java.lang.ArithmeticException”算術(shù)異常。產(chǎn)生異常的語句,在包“com.task13”中的“MyException”類中的“main()”方法的第15行,除數(shù)為零。出現(xiàn)了異常,會打亂原先的執(zhí)行順序,得不

11、到預(yù)期的運行結(jié)果。所以,需要在程序中進行異常處理。異常處理把程序功能代碼與異常處理代碼分開,集中處理異常,使得整個程序代碼更有條理,也減少了編程代碼。第1章目錄第12頁/共29頁132913.4.2 異常處理機制Java使用異常處理機制為程序提供了異常處理的能力。所謂異常處理,就是在程序中預(yù)先想好對異常的處理辦法,當程序運行出現(xiàn)異常時,對異常進行處理,處理完畢,程序繼續(xù)運行。Java異常處理機制由捕獲異常和處理異常兩部分組成。當出現(xiàn)了異常事件,就會生成一個異常對象,傳遞給運行時系統(tǒng),這個產(chǎn)生和提交異常的過程稱為拋出(throw)異常。當運行時系統(tǒng)得到異常對象時,將會尋找處理異常的方法,把當前異

12、常對象交給該方法處理,這一過程稱為捕獲(catch)異常。如果沒有找到可以捕獲異常的方法,則運行時系統(tǒng)將終止,程序退出運行狀態(tài)。第1章目錄13.4 必備知識 第13頁/共29頁1429 13.4.3 異常的分類 Java中,異常由類來表示,異常類的父類是Throwable類。Throwable類有兩個直接子類Error類和Exception類。Error類表示程序運行時較少發(fā)生的內(nèi)部系統(tǒng)錯誤,程序員無法處理。Exception類表示程序運行時程序本身和環(huán)境產(chǎn)生的異常,可以捕獲和處理。異常類繼承結(jié)構(gòu)如圖13-3。13.4 必備知識 ThrowableObjectErrorExceptionSQL

13、ExceptionIOExceptionRuntimeException第14頁/共29頁1529 13.4.4 標準異常類 Exception類常用子類的繼承關(guān)系如表13-3。13.4 必備知識 ThrowableObjectErrorExceptionSQLExceptionIOExceptionRuntimeException第15頁/共29頁1629 13.4.5 異常的捕獲與處理 Java的異常捕獲與處理是通過5個關(guān)鍵字來實現(xiàn)的:try、catch、 finally、throw、throws。 本任務(wù)的重點在學(xué)習(xí)try/catch/finally結(jié)構(gòu)上。 關(guān)鍵字try構(gòu)成的try語句

14、塊執(zhí)行可能產(chǎn)生異常的代碼; 關(guān)鍵字catch構(gòu)成的catch語句塊捕獲異常,然后,對異常進行所需的處理; 關(guān)鍵字finally構(gòu)成的finally語句塊完成一些資源釋放、清理的工作,如關(guān)閉try程序塊中所有打開的文件、斷開網(wǎng)絡(luò)連接。 在異常處理中,經(jīng)常使用異常對象的方法。使用getMessage()方法返回保存在某個異常中的描述字符串,使用printStackTrace ()方法把調(diào)用堆棧的內(nèi)容打印出來。 關(guān)鍵字throw用于手動拋出異常、throws用于聲明方法可能要拋出的各種異常,將在任務(wù)十四進行學(xué)習(xí)。13.4 必備知識 第16頁/共29頁1729 1.異常處理的語句結(jié)構(gòu) try /try

15、語句塊,可能產(chǎn)生異常的代碼。 catch(異常類型 異常引用變量) /catch語句塊,處理異常的代碼。捕獲異常。 finally /finally語句塊,釋放資源的代碼。無論是否發(fā)生異常,代碼都會執(zhí)行。 在語句結(jié)構(gòu)中,try和catch部分是必須的,并且catch部分可以有多個,finally語句塊是可選項,可以沒有。13.4 必備知識 第17頁/共29頁1829 2. 異常處理的執(zhí)行流程try語句塊異常?catch語句塊finally語句塊有異常無異常異常處理的執(zhí)行流程如圖13-3。try語句塊異常?catch語句塊finally語句塊有異常無異常13.4 必備知識 第18頁/共29頁19

16、29 從異常處理的執(zhí)行流程圖中,可以看出,當try語句塊引發(fā)異常時,將會拋出異常對象,然后,在catch語句塊中捕獲異常對象,進行異常處理。如果無法捕獲拋出的異常對象,則會發(fā)生錯誤,程序停止運行。 如果try語句塊沒有引發(fā)異常,catch語句塊將不執(zhí)行。但是,無論有沒有異常拋出,finally語句塊總是被執(zhí)行。 注意:catch語句塊中的異常處理代碼中,不能訪問由try語句塊定義的對象,這是因為try語句塊在異常處理代碼開始執(zhí)行之前已過期。13.4 必備知識 第19頁/共29頁2029 3. try/catch結(jié)構(gòu)捕獲異常 try/catch結(jié)構(gòu)是異常處理中最簡潔、最核心的語句塊,能夠捕獲異常

17、,并進行必要的處理。關(guān)鍵字try和catch都不能省略。 例如,在新生入學(xué)時使用的迎新系統(tǒng)中,輸入新生的家庭電話號碼。號碼只能是數(shù)字組成,如果輸入非數(shù)字,則產(chǎn)生異常。代碼如下: package com.task13; import java.util.Scanner; /* * TryCatchException.java * 實現(xiàn)try/catch */ public class TryCatchException /* * param args */public static void main(String args) Scanner in = new Scanner(System.in

18、);System.out.println(=迎新系統(tǒng)=);System.out.println(3 新生報到);13.4 必備知識 第20頁/共29頁2129 try /try語句塊,可能產(chǎn)生異常的代碼System.out.println(請輸入新生的家庭電話號碼:);System.out.println(如,區(qū)號0523+號碼81234567,輸入052381234567);String telephone=in.nextLine(); /檢測輸入的電話號碼是否全為數(shù)字,不全為數(shù)字,產(chǎn)生異常int tel=Integer.parseInt(telephone);System.out.prin

19、tln(新生的家庭電話號碼:+tel); catch (NumberFormatException nex) /捕獲異常/catch語句塊對異常進行處理 System.out.println(產(chǎn)生異常,電話號碼應(yīng)為數(shù)字!); /System.out.println(nex.toString(); /返回異常對象的類名,以及異常對象的信息nex.printStackTrace(); /堆棧跟蹤功能顯示出程序運行到當前類的執(zhí)行流程 13.4 必備知識 第21頁/共29頁2229 4.多重catch捕獲異常 多重catch就是在try/catch結(jié)構(gòu)中,出現(xiàn)一個try語句塊,多個catch語句塊的情

20、況,每個catch語句塊捕獲一種異常類的對象。如果捕獲的異常類之間沒有父子關(guān)系,各類的catch語句塊順序無關(guān)緊要,但是,如果它們之間有父子關(guān)系,則必須將子類的catch語句塊放在父類的catch語句塊之前。 例如,ArithmeticException算術(shù)異常類與NullPointerException空指針異常類之間不存在父子關(guān)系,捕獲異常時,它們的catch語句塊順序可以不加考慮。 try /try語句塊,可能產(chǎn)生異常的代碼。 catch(ArithmeticException ae) /位置可以與NullPointerException 類對調(diào) /catch語句塊,處理異常的代碼。捕獲

21、異常。 catch(NullPointerException ne)/位置可以與ArithmeticException 類對調(diào) /catch語句塊,處理異常的代碼。捕獲異常。 13.4 必備知識 第22頁/共29頁2329 但是,Exception是異常根類,ArrayIndexOutOfBoundsException是數(shù)組索引越界異常類,它們之間存在父子關(guān)系,所以,Exception父類catch語句塊只能放在后面。 try /try語句塊,可能產(chǎn)生異常的代碼。 catch(ArrayIndexOutOfBoundsException ae)/位置必須在Exception之前 /catch語

22、句塊,處理異常的代碼。捕獲異常。 catch(Exception e)/位置只能在ArrayIndexOutOfBoundsException之后 /catch語句塊,處理異常的代碼。捕獲異常。 13.4 必備知識 第23頁/共29頁2429 多重catch捕獲異常舉例。從鍵盤輸入除數(shù)和被除數(shù),計算結(jié)果。當輸入的數(shù)不為數(shù)字時,產(chǎn)生NumberFormatException異常。當除數(shù)為零時,產(chǎn)生ArithmeticException算術(shù)異常,此時結(jié)果分為正無窮、零、負無窮三種情況。出現(xiàn)其他的異常,則顯示無法處理。代碼如下。 package com.task13; import java.uti

23、l.Scanner; /* * TryCatchsException.java * 實現(xiàn)多重catch */ public class TryCatchsException /* * param args */public static void main(String args) int operand1=0;/除數(shù)int operand2=0;/被除數(shù)Scanner in = new Scanner(System.in);13.4 必備知識 第24頁/共29頁2529try System.out.println(請輸入除數(shù):);operand1=Integer.parseInt(in.ne

24、xtLine();System.out.println(請輸入被除數(shù):);operand2=Integer.parseInt(in.nextLine();System.out.println(運算結(jié)果:+operand2/operand1);catch (NumberFormatException nex) /捕獲字符串轉(zhuǎn)數(shù)字異常 System.out.println(捕獲異常:輸入不為數(shù)字!);catch (ArithmeticException aex) /捕獲算術(shù)異常,除數(shù)為零if (operand20)System.out.println(運算結(jié)果:正無窮);else if (oper

25、and20)System.out.println(運算結(jié)果:負無窮);elseSystem.out.println(運算結(jié)果:零);catch (Exception ex) System.out.println(出現(xiàn)無法處理的異常!); 13.4 必備知識 第25頁/共29頁2629 5. try/catch/finally結(jié)構(gòu)捕獲異常 try/catch/finally結(jié)構(gòu)帶有關(guān)鍵字finally。finally語句塊用來進行善后處理工作。例如,打開數(shù)據(jù)庫,從數(shù)據(jù)庫讀取相應(yīng)的數(shù)據(jù),當讀取完成后,最后要關(guān)閉數(shù)據(jù)庫連接。沒有讀取成功,也要關(guān)閉數(shù)據(jù)庫連接。 package com.task13; import java.util.Scanner; /* * TryCatchFin

溫馨提示

  • 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

提交評論