Java程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)式教程防患于未然-文檔資料_第1頁
Java程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)式教程防患于未然-文檔資料_第2頁
Java程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)式教程防患于未然-文檔資料_第3頁
Java程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)式教程防患于未然-文檔資料_第4頁
Java程序設(shè)計(jì)任務(wù)驅(qū)動(dòng)式教程防患于未然-文檔資料_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1主編:孫修東、王永紅高職高專規(guī)劃示范教材 北京航空航天大學(xué)出版社2目錄任務(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時(shí)代的消息傳遞(定義和使用類方法)任務(wù)八 保護(hù)你的隱私(封裝的使用)任務(wù)九 子承父業(yè)(繼承和多態(tài)的使用)任務(wù)十 上帝萬能之手(接口的使用)3任務(wù)十一 用數(shù)組存儲(chǔ)信息(使用數(shù)組)任務(wù)十二 使用字符串進(jìn)行交流(使用字符串)任務(wù)十三 防患于未然(捕獲并處理異常)任務(wù)十四 主動(dòng)出擊

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

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

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

5、常捕獲和處理技術(shù)保證程序的健壯性。第1章目錄913.2 實(shí)現(xiàn)方案 n解決步驟解決步驟1.打開Eclipse,在study項(xiàng)目中創(chuàng)建包c(diǎn)om.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,

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

7、anner;/* * CalculateException.java * 實(shí)現(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(計(jì)算結(jié)果:+result3); catch (InputMismatchException ie) System.out.println(異常:輸入不為數(shù)字!); catch (ArithmeticException ae) System.out.println(異常:除數(shù)不能為零!); catch (ArrayIndexOutOfBoundsException aie) System.out.println(異常:數(shù)組索引越界!);catch (Exce

9、ption e) System.out.println(其他異常:+e.getMessage();第1章目錄13.3 代碼分析 11n應(yīng)用擴(kuò)展應(yīng)用擴(kuò)展如果在程序運(yùn)行后,要求無論產(chǎn)生異常,還是不產(chǎn)生異常,都要顯示“歡迎使用計(jì)算機(jī)器”,則需要在trycatch后,增加finally。增加的代碼為:finallySystem.out.println(歡迎使用計(jì)算機(jī)器!);13.3 代碼分析 1213.4 必備知識(shí) 13.4.1 異常的概念在Java程序編寫中,通過編譯,能夠發(fā)現(xiàn)很多錯(cuò)誤,但有些問題只能在程序運(yùn)行的時(shí)候才能發(fā)現(xiàn)。一旦問題出現(xiàn),程序?qū)⒔K止,返回到操作系統(tǒng)。異常異常就是在程序的運(yùn)行過程中所

10、發(fā)生的不正常的事件,它會(huì)中斷正在運(yùn)行的程序。例如,除數(shù)為零、數(shù)組下標(biāo)越界、需要的文件找不到等,程序都會(huì)出現(xiàn)異常。例如,當(dāng)給int類型變量b賦值0后,執(zhí)行到c=a/b;語句時(shí),就會(huì)出現(xiàn)異常,因?yàn)閿?shù)學(xué)中規(guī)定除數(shù)為能為零。異常信息如圖13-2。第1章目錄1313.4 必備知識(shí) 圖中的異常信息表示,產(chǎn)生了“java.lang.ArithmeticException”算術(shù)異常。產(chǎn)生異常的語句,在包“com.task13”中的“MyException”類中的“main()”方法的第15行,除數(shù)為零。出現(xiàn)了異常,會(huì)打亂原先的執(zhí)行順序,得不到預(yù)期的運(yùn)行結(jié)果。所以,需要在程序中進(jìn)行異常處理。異常處理把程序功能代

11、碼與異常處理代碼分開,集中處理異常,使得整個(gè)程序代碼更有條理,也減少了編程代碼。第1章目錄1413.4.2 異常處理機(jī)制Java使用異常處理機(jī)制為程序提供了異常處理的能力。所謂異常處異常處理理,就是在程序中預(yù)先想好對異常的處理辦法,當(dāng)程序運(yùn)行出現(xiàn)異常時(shí),對異常進(jìn)行處理,處理完畢,程序繼續(xù)運(yùn)行。Java異常處理機(jī)制由捕獲異常和處理異常兩部分組成。當(dāng)出現(xiàn)了異常事件,就會(huì)生成一個(gè)異常對象,傳遞給運(yùn)行時(shí)系統(tǒng),這個(gè)產(chǎn)生和提交異常的過程稱為拋出(拋出(throw)異常)異常。當(dāng)運(yùn)行時(shí)系統(tǒng)得到異常對象時(shí),將會(huì)尋找處理異常的方法,把當(dāng)前異常對象交給該方法處理,這一過程稱為捕獲(捕獲(catch)異)異常常。如

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

13、n1613.4.4 標(biāo)準(zhǔn)異常類Exception類常用子類的繼承關(guān)系如表13-3。13.4 必備知識(shí)必備知識(shí) ThrowableObjectErrorExceptionSQLExceptionIOExceptionRuntimeException1713.4.5 異常的捕獲與處理Java的異常捕獲與處理是通過5個(gè)關(guān)鍵字來實(shí)現(xiàn)的:try、catch、 finally、throw、throws。本任務(wù)的重點(diǎn)在學(xué)習(xí)try/catch/finally結(jié)構(gòu)上。關(guān)鍵字try構(gòu)成的try語句塊執(zhí)行可能產(chǎn)生異常的代碼;關(guān)鍵字catch構(gòu)成的catch語句塊捕獲異常,然后,對異常進(jìn)行所需的處理;關(guān)鍵字final

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

15、finally語句塊,釋放資源的代碼。無論是否發(fā)生異常,代碼都會(huì)執(zhí)行。在語句結(jié)構(gòu)中,try和catch部分是必須的,并且catch部分可以有多個(gè),finally語句塊是可選項(xiàng),可以沒有。13.4 必備知識(shí)必備知識(shí) 192. 異常處理的執(zhí)行流程異常處理的執(zhí)行流程try語句塊異常?語句塊異常?catch語句塊語句塊finally語句塊語句塊有異常無異常有異常無異常異常處理的執(zhí)行流程如圖13-3。try語句塊異常?catch語句塊finally語句塊有異常無異常13.4 必備知識(shí)必備知識(shí) 20從異常處理的執(zhí)行流程圖中,可以看出,當(dāng)try語句塊引發(fā)異常時(shí),將會(huì)拋出異常對象,然后,在catch語句塊中捕

16、獲異常對象,進(jìn)行異常處理。如果無法捕獲拋出的異常對象,則會(huì)發(fā)生錯(cuò)誤,程序停止運(yùn)行。如果try語句塊沒有引發(fā)異常,catch語句塊將不執(zhí)行。但是,無論無論有沒有異常拋出,有沒有異常拋出,finally語句塊總是被執(zhí)行。語句塊總是被執(zhí)行。注意:注意:catch語句塊中的異常處理代碼中,不能訪問由try語句塊定義的對象,這是因?yàn)閠ry語句塊在異常處理代碼開始執(zhí)行之前已過期。13.4 必備知識(shí)必備知識(shí) 213. try/catch結(jié)構(gòu)捕獲異常結(jié)構(gòu)捕獲異常try/catch結(jié)構(gòu)是異常處理中最簡潔、最核心的語句塊,能夠捕獲異常,并進(jìn)行必要的處理。關(guān)鍵字try和catch都不能省略。例如,在新生入學(xué)時(shí)使用的

17、迎新系統(tǒng)中,輸入新生的家庭電話號碼。號碼只能是數(shù)字組成,如果輸入非數(shù)字,則產(chǎn)生異常。代碼如下:package com.task13;import java.util.Scanner;/* * TryCatchException.java * 實(shí)現(xiàn)try/catch */public class TryCatchException /* * param args */public static void main(String args) Scanner in = new Scanner(System.in);System.out.println(=迎新系統(tǒng)=);System.out.print

18、ln(3 新生報(bào)到);13.4 必備知識(shí)必備知識(shí) 22try /try語句塊,可能產(chǎn)生異常的代碼System.out.println(請輸入新生的家庭電話號碼:);System.out.println(如,區(qū)號0523+號碼81234567,輸入052381234567);String telephone=in.nextLine();/檢測輸入的電話號碼是否全為數(shù)字,不全為數(shù)字,產(chǎn)生異常產(chǎn)生異常int tel=Integer.parseInt(telephone);System.out.println(新生的家庭電話號碼:+tel); catch (NumberFormatException

19、nex) /捕獲異常捕獲異常/catch語句塊對異常進(jìn)行處理System.out.println(產(chǎn)生異常,電話號碼應(yīng)為數(shù)字!);/System.out.println(nex.toString(); /返回異常對象的類名,以及異常對象的信息nex.printStackTrace(); /堆棧跟蹤功能顯示出程序運(yùn)行到當(dāng)前類的執(zhí)行流程 13.4 必備知識(shí)必備知識(shí) 234.多重多重catch捕獲異常捕獲異常多重catch就是在try/catch結(jié)構(gòu)中,出現(xiàn)一個(gè)try語句塊,多個(gè)catch語句塊的情況,每個(gè)catch語句塊捕獲一種異常類的對象。如果捕獲的異常類之間沒有父子關(guān)系,各類的catch語句塊

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

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

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

23、a * 實(shí)現(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 必備知識(shí)必備知識(shí) 26try System.out.println(請輸入除數(shù):);operand1=Integer.parseInt(in.nextLine();System.out.println(請輸入被除數(shù):);operand2=

24、Integer.parseInt(in.nextLine();System.out.println(運(yùn)算結(jié)果:+operand2/operand1);catch (NumberFormatException nex) /捕獲字符串轉(zhuǎn)數(shù)字異常 System.out.println(捕獲異常:輸入不為數(shù)字!);catch (ArithmeticException aex) /捕獲算術(shù)異常,除數(shù)為零if (operand20)System.out.println(運(yùn)算結(jié)果:正無窮);else if (operand20)System.out.println(運(yùn)算結(jié)果:負(fù)無窮);elseSystem.out.println(運(yùn)算結(jié)果:零);catch (Exception ex) System.out.println(出現(xiàn)無法處理的異常!); 13.4 必備知識(shí)必備知識(shí) 275. try/catch/finally結(jié)構(gòu)捕獲異常結(jié)構(gòu)捕獲異常try/catch/finally結(jié)構(gòu)帶有關(guān)鍵字finally。finally語句塊用來進(jìn)行善后處理工作。例如,打開數(shù)據(jù)庫,從數(shù)據(jù)庫讀取相應(yīng)的數(shù)據(jù),當(dāng)讀取完成后,最后要關(guān)閉數(shù)據(jù)庫連接。沒有讀取成功,也要關(guān)閉數(shù)據(jù)庫連接。package com.task13;impor

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論