Java專題4案例2.-異常課件_第1頁
Java專題4案例2.-異常課件_第2頁
Java專題4案例2.-異常課件_第3頁
Java專題4案例2.-異常課件_第4頁
Java專題4案例2.-異常課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

猜字游戲教學目標了解編程中遇到的錯誤理解Java異常及Java異常處理機制掌握自定義異常的使用掌握throw與throws的區(qū)別能熟練使用try-catch-finlly進行異常處理通過實現(xiàn)加法計算器功能掌握Java的異常處理Java專題4案例2.-異常演示程序演示程序……Java專題4案例2.-異常相關(guān)實踐1打開netBeans5.5,新建guessNumber應(yīng)用程序,在項目中加入包com.handson.guessNumberJava專題4案例2.-異常相關(guān)實踐2新建類NumberException類,用來生成自定義異常

packagecom.handson.guessNumber;publicclassNumberExceptionextendsException{publicNumberException(){super("輸入的不是一個100以內(nèi)的正整數(shù)!");}}

Java專題4案例2.-異常相關(guān)實踐3在com.handson.guessNumber包中新建類ToolspublicclassTools{publicstaticbooleanchick(Stringtemp)throwsNumberException{intnumber=Integer.parseInt(temp);if(number<0||number>=100){thrownewNumberException();}if(number==65){returntrue;}else{returnfalse;}}}Java專題4案例2.-異常相關(guān)實踐4新建類Main,用來測試publicclassMain{publicstaticvoidmain(String[]args){booleanb=false;System.out.println("一個數(shù)字游戲");System.out.println("請看下面的數(shù)字,判斷最后一個數(shù)字是什么?");System.out.println("5,9,17,33,?");System.out.println("答案要是一個正整數(shù)!");System.out.println("請輸入答案");Java專題4案例2.-異常相關(guān)實踐5繼續(xù)main函數(shù)中的代碼try{BufferedReaderreader=newBufferedReader(newInputStreamReader(System.in));Stringanswer=reader.readLine();b=Tools.chick(answer);}catch(IOExceptionex){System.out.println("沒有輸入!");

ex.printStackTrace();}catch(java.lang.NumberFormatExceptionex){System.out.println("輸入的不是數(shù)字");

System.out.println(ex.getMessage());ex.printStackTrace();}catch(NumberExceptionex){System.out.println(ex.getMessage());}……123Java專題4案例2.-異常相關(guān)實踐6繼續(xù)main函數(shù)中的代碼……finally

{if(b){System.out.println("回答的非常正確!");}else{System.out.println("回答不正確!");}}}Java專題4案例2.-異常相關(guān)實踐7運行輸入非數(shù)字Java專題4案例2.-異常相關(guān)實踐8運行輸入不在0-100之間的數(shù)字Java專題4案例2.-異常相關(guān)實踐9輸入正確答案的結(jié)果Java專題4案例2.-異常總結(jié)異常是運行時發(fā)生的錯誤可以使用try、catch、throw、throws和finally來管理Java異常處理。要監(jiān)控的程序語句包含在try塊內(nèi)catch塊中的代碼用于捕獲和處理異常。在方法返回之前絕對必須執(zhí)行的代碼應(yīng)放置在finally塊中要手動引發(fā)異常,使用關(guān)鍵字throw。任何被拋到方法外部的異常都必須用throws子句指定自定義異常的編寫和使用Java專題4案例2.-異常編程中的錯誤編譯錯誤編譯錯誤是由于所編寫的程序存在語法問題,未能通過由源代碼到目標碼(Java語言中由源代碼到字節(jié)碼)的編譯過程而產(chǎn)生的,它由語言的編譯系統(tǒng)負責檢測和報告;系統(tǒng)運行錯誤系統(tǒng)運行錯誤是指程序在執(zhí)行過程中發(fā)生的錯誤,它會中斷程序的正常執(zhí)行;邏輯運行錯誤沒有了編譯錯誤和系統(tǒng)運行錯誤,還有可能有邏輯運行錯誤,邏輯運行錯誤是指程序不能實現(xiàn)編程人員的設(shè)計意圖和設(shè)計功能而產(chǎn)生的錯誤,例如排序時不能正確排序。Java專題4案例2.-異常異常異常(Exception)=非正常異常不同于錯誤舉例:到C盤找不存在的文件異常是需要處理的Java專題4案例2.-異常Java語言特定的運行錯誤處理機制異常對象異常拋出異常拋出異常類處理機制Java專題4案例2.-異常異常類異常類包括:java定義的異常類自定義異常類Java中定義了很多異常類,每個異常類都代表了一種運行錯誤,類中包含了該運行錯誤的信息和處理錯誤的方法等內(nèi)容。每當Java程序運行過程中發(fā)生一個可識別的運行錯誤時,系統(tǒng)都會產(chǎn)生一個相應(yīng)的該異常類的對象,即產(chǎn)生一個異常Java專題4案例2.-異常系統(tǒng)定義的運行異常異常說明RuntimeExceptionjava.lang包中多數(shù)異常的基類ArithmeticException算術(shù)錯誤,如除以0IllegalArgumentException方法收到非法參數(shù)ArrayIndexOutOfBoundsException數(shù)組下標出界NullPointerException試圖訪問null對象引用SecurityException試圖違反安全性ClassNotFoundException不能加載請求的類AWTExceptionAWT中的異常IOExceptionI/O異常的根類

不能找到文件EOFException文件結(jié)束IllegalAccessException對類的訪問被拒絕NoSuchMethodException請求的方法不存在Java專題4案例2.-異常用戶自定義異常內(nèi)置異常不可能始終足以捕獲所有錯誤,因此需要用戶自定義的異常類用戶自定義異常主要用來處理用戶程序中特定的邏輯運行錯誤用戶自定義的異常類應(yīng)為Exception類(或者Exception類的子類)的子類例如:publicclassNumberExceptionextendsException{publicNumberException(){super("輸入的不是一個100以內(nèi)的正整數(shù)!");}}Java專題4案例2.-異常異常的拋出1異常拋出系統(tǒng)自動拋出(系統(tǒng)定義異常類的對象)手工拋出(自定義異常對象或系統(tǒng)異常對象)手式拋出異常時用throw語句使用throw語句就可以明確地拋出一個異常throw語句格式為:<throw><異常對象>Java專題4案例2.-異常異常的拋出2throws語句如果一個方法可能導(dǎo)致一個異常但不處理它,此時要求在方法聲明中包含throws子句,通知潛在調(diào)用者,如果發(fā)生了異常,由調(diào)用者處理。一個throws子句列舉了一個方法可能引發(fā)的所有異常類型。例如publicstaticbooleanchick(Stringtemp)throwsNumberException

Java專題4案例2.-異常異常的拋出3throw與throws的區(qū)別throws出現(xiàn)在方法頭,而throw出現(xiàn)在方法體中。throws表示出現(xiàn)異常的一種可能性,并不一定會發(fā)生這些異常,執(zhí)行throw則一定拋出了某種異常。兩者都是消極處理異常的方式(這里的消極并不是說這種方式不好),只是拋出或者可能拋出異常,但是不會由方法去處理異常,真正的處理異常由方法的上層調(diào)用處理。Java專題4案例2.-異常捕獲異常1Java語言中異常的捕獲是通過try-catch-finally語句來實現(xiàn)的。try{ //有可能拋棄異常的代碼}catch(Exceptionname1e){ //異常處理代碼}catch(Exceptionname2e){ //異常處理代碼}finally{ //此部分代碼總被執(zhí)行}Java專題4案例2.-異常Try-catch-finally執(zhí)行流程try塊finally塊catch塊

無異常異常try、catch和finally塊的執(zhí)行流程Java專題4案例2.-異常try塊trytry塊中的語句體是程序中有可能產(chǎn)生一個或多個異常的語句,該段語句是程序正常情況下應(yīng)該要完成的功能。Java專題4案例2.-異常Catch塊1Catch塊每個try代碼塊可以伴隨一個或多個catch塊,用于捕獲并處理try代碼塊中所生成的異常。catch語句只需要一個形式參數(shù)指明它能捕獲的異常類型,這個類型必須是Throwable的子類,運行時系統(tǒng)通過參數(shù)值把被拋出的異常對象傳遞給catch塊。Java專題4案例2.-異常Catch塊2每個catch塊都有一個異常類對象作為參數(shù)一個異常對象能否被一個catch語句塊所接收,主要看該異常對象與catch塊的異常參數(shù)的匹配情況:當它們滿足下面三個條件的任何一個時,異常對象將被接收。異常對象與參數(shù)屬于相同的異常類異常對象屬于參數(shù)異常類的子類異常對象實現(xiàn)了參數(shù)所定義的接口Java專題4案例2.-異常Catch塊3catch語句的順序先捕獲子類異常,再捕獲父類異常例如:intx=0;try{ inty=10/x;}catch(ArithmeticExceptione){ System.out.println("devidebyzero");}catch(Exceptione){ System.out.println("Thereisanexception");}

Java專題4案例2.-異常Catch塊4異常只能被捕捉一次如果異常沒有被捕捉,程序流程將返回到調(diào)用該方法的上層方法Java專題4案例2.-異常Finally塊finally確保了在出現(xiàn)異常時所有清除工作都將得到處理與try塊一起使用無論是否出現(xiàn)異常,finally塊都將運行Java專題4案例2.-異常異常類常用方法1publicStringgetMessage();getMessage()方法返回描述當前異常類的消息字符串。pub

溫馨提示

  • 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

提交評論