java速成課件異常1_第1頁
java速成課件異常1_第2頁
java速成課件異常1_第3頁
java速成課件異常1_第4頁
java速成課件異常1_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、介紹jdk的API中文版給大家大?。?0多兆類的眾多子類將構(gòu)成一個樹狀繼承關(guān)系1使用指南左下角為類的列表右邊為每個類的詳細介紹其中包括:類的介紹構(gòu)造函數(shù)(方法)普通函數(shù)(方法)從父類繼承來的方法整個jdk中的所有類構(gòu)成一個樹狀關(guān)系2第九章異常3異常概念程序中的錯誤: 編譯錯誤 運行錯誤異常的概念:指程序在執(zhí)行過程中出現(xiàn)程序本身沒有預(yù)料的情況,從而導(dǎo)致程序錯誤結(jié)束使用異常機制的目的:用來在發(fā)生運行異常時告訴程序如何控制自身的運行,以防止錯誤的進一步惡化4一、異常處理機制 Java使用異常對Java程序給出一個統(tǒng)一和相對簡單的拋出和處理錯誤的機制。如果一個方法本身能拋出異常,當所調(diào)用的方法出現(xiàn)異常

2、時,調(diào)用者可以捕獲異常使之得到處理;也可以回避異常,這時異常將在調(diào)用的堆棧中向下傳遞,直到被處理。5 異常類 在Java中,異常是一個對象,它繼承自Throwable類,所有的Throwable類的子孫類所產(chǎn)生的對象都是異常。ObjectThrowableExceptionError 異常類的繼承結(jié)構(gòu)6異常的分類ThrowableErrorExceptionRuntimeException缺省的異常處理程序由用戶捕獲或聲明并處理不做處理用戶自己產(chǎn)生的異常要處理7異常的處理程序運行時出現(xiàn)錯誤創(chuàng)建異常對象拋出異常對象捕獲并處理8Exception 類的主要方法public Exception( )

3、;public Exception(String s);public String toString( );public String getMessage( );9二、異常處理方法 異常處理的方法有兩種: 一種方法是使用trycatchfinally結(jié)構(gòu)對異常進行捕獲和處理; 二種方法是通過throws和throw拋出異常。 10舉例:考試過程中可能出現(xiàn)的異常情況public class demo1 public static void main(String args) try 考試60分鐘catch(忘記帶證件)/請出考場catch(要上廁所)/靈活處理catch(要上廁所)/靈活處理c

4、atch(中暑或者不舒服)/開空調(diào)catch(提前交卷)/送到備考室catch(缺考)/填缺考資料finally收試卷 宣布考試結(jié)束11異常處理在Java中,可以通過trycatchfinally結(jié)構(gòu)對異常進行捕獲和處理,其形式如下:try 可能出現(xiàn)異常的程序代碼catch (異常類名1 異常對象名1) 異常類名1對應(yīng)的異常處理代碼catch (異常類名2 異常對象名2) 異常類名2對應(yīng)的異常處理代碼finally 必須執(zhí)行的代碼 12trycatchfinally結(jié)構(gòu) 說明(1)將可能發(fā)生異常的程序代碼放置在try程序塊中。程序正常運行過程中,后面的各catch塊不起任何作用。但如果該塊內(nèi)的

5、代碼出現(xiàn)了異常,系統(tǒng)將終止try塊代碼的執(zhí)行,自動跳轉(zhuǎn)到所發(fā)生的異常類對應(yīng)的catch塊中,執(zhí)行該塊中的代碼。 (2)其中的finally塊是個可選項,如果包含有finally塊,無論異常是否發(fā)生,finally塊的代碼必定執(zhí)行。 (3)一個try塊可以對應(yīng)多個catch塊,用于對多個異常類進行捕獲。 13【任務(wù)8-1】處理除數(shù)為0異常public class InputException1 public static void main(String args)try System.out.println(4/0); catch ( ArithmeticException e) System

6、.out.println(算術(shù)錯誤:除數(shù)為0,提示信息為+e.toString();算術(shù)錯誤:除數(shù)為0,提示信息為java.lang.ArithmeticException: / by zero14public class ArrayException public static void main(String args)int x=args.length;int a=new intx;for (int i=0;i=x-1;i+)ai=Integer.parseInt(argsi);int b=1,2,3,4,0;/try catch 代碼 見下頁【任務(wù)8-2】同時處理多個異常1111異常:

7、數(shù)組越界程序結(jié)束1111異常:算數(shù)錯誤程序結(jié)束15tryfor (int i=0;i5;i+)System.out.println(ai/bi);catch(ArrayIndexOutOfBoundsException e1)System.out.println(異常:數(shù)組越界);catch(ArithmeticException e2)System.out.println(異常:算數(shù)錯誤);finallySystem.out.println(程序結(jié)束);16拋出異常語句 通常情況下,異常是由系統(tǒng)自動捕獲的。但程序員也可以自己通過throw語句拋出異常。throw語句的格式為: throw n

8、ew 異常類名(信息) 其中異常類名為系統(tǒng)異常類名或用戶自定義的異常類名,“信息”是可選信息。如果提供了該信息,toString()方法的返回值中將增加該信息內(nèi)容。 17public class Deposit public static double discount(int n) if (n0)throw new IllegalArgumentException(n應(yīng)該為正整數(shù));return n*0.08;public static void main(String args)try int i=Integer.parseInt(args0); System.out.println(用戶

9、消費+i+元,可優(yōu)惠+discount(i)+元);catch(ArrayIndexOutOfBoundsException e1)System.out.println(異常:沒有輸入?yún)?shù));catch(NumberFormatException e2)System.out.println(異常:參數(shù)不能轉(zhuǎn)換為整型);catch (IllegalArgumentException e3)System.out.println(自定義異常:+e3.toString();finallySystem.out.println(程序結(jié)束);【任務(wù)8-3】拋出異常注意異常類型的捕獲順序18異常:沒有輸入?yún)?shù)

10、程序結(jié)束異常:參數(shù)不能轉(zhuǎn)換為整型程序結(jié)束自定義異常:java.lang.IllegalArgumentException: n應(yīng)該為正整數(shù)程序結(jié)束用戶消費800元,可優(yōu)惠64.0元程序結(jié)束19舉例:考試過程異常情況 監(jiān)考老師處理不了怎么辦?向上級報告!在java中 :拋出異常 自己不處理,由調(diào)用它的函數(shù)來處理if(passwd.length()6)throw new PasswdException();else return true;20 拋出異常選項在有些情況下,一個方法并不需要處理它所生成的異常,而是向上傳遞,由調(diào)用該方法的其他方法來捕獲該異常,這時就要用到throws子句。為了明確指出

11、某方法不捕獲某類異常,而讓調(diào)用該方法的其他方法捕獲該類異常,可以在申明該方法的時候,使用throws語句其格式如下: 返回類型 方法名(參數(shù)表) throws 異常類型名 聲明部分 21自定義異常類 自定義異常類可以通過繼承Exception類來實現(xiàn)。其一般形式為: class 自定義異常類名 extends Exception 異常類體; 22【任務(wù)8-4】在程序中自定義一個異常類并使用它import javax.swing.JOptionPane; class PasswdException extends Exception PasswdException()System.out.pri

12、ntln( 密碼不能小于六位);public class Passwd public static int x=10000;public static boolean checkpasswd(String passwd) throws PasswdExceptionif(passwd.length()6)throw new PasswdException();else return true;/main函數(shù)密碼不能小于六位ch8.eg8_4.PasswdException程序結(jié)束密碼已經(jīng)設(shè)置程序結(jié)束23public static void main(String args)try String

13、 passwd=JOptionPane.showInputDialog( 請設(shè)置初始密碼);checkpasswd(passwd);System.out.println(密碼已經(jīng)設(shè)置);catch(PasswdException e)System.out.println(e);finallySystem.out.println(程序結(jié)束);24該任務(wù)中自己定義了一個異常如下:class PasswdException extends Exception PasswdException()System.out.println( 密碼不能小于六位);25 Exception子類的繼承關(guān)系Excep

14、tionClassNotFoundExceptionClassNotSupportedExceptionIllegalAccessExceptionInstantiationExceptionInterruptedExceptionNoSuchMethodExceptionRuntimeExceptionArithmeticExceptionArrayStoreExceptionClassCastExceptionIllegalArgumentException26Exception子類(續(xù))IllegalThreadStateExceptionNumberFormatExceptionIll

15、egalMonitorStateExceptionIndexOutOfBoundsExceptionArrayIndexOutOfBoundsExceptionStringIndexOutOfBoundsExceptionNegativeArraySizeExceptionNullPointerExceptionSecurityException 27上機作業(yè)1設(shè)計一個java程序,有數(shù)組a()=10,20,30,40,50;b()=0,2,30;求數(shù)組c()=ai/bi,i=0-4.請?zhí)幚泶顺绦蛩l(fā)生的任何異常(ArrayIndexOutofBoundsException)(Aritheme

16、ticException)281關(guān)于異常的含義,下列描述正確的是A程序編譯錯誤B 程序語法錯誤C 程序自定義的異常D 程序編譯或者運行時發(fā)生的異常事件D295 對于try和catch子句的排列方式,下列哪一項是正確的?A子類異常在前,父類異常在后B 父類異常在前,子類異常在后C 只能有子類異常D 父類異常和子類異常不能同時出現(xiàn)在同一個類中A307 關(guān)于java語言中常用的異常類的說法,錯誤的一個是A在不合法的數(shù)學(xué)運算發(fā)生時,會出現(xiàn)ArithmeticException類異常B 如果字符串轉(zhuǎn)換成數(shù)字,需要準備處理NumberFormatException異常C 如果使用非法的索引值來訪問數(shù)組,A

17、rrayIndexOutOfBoundsException異常會被拋出D如果指針變量為空,NullPointException異常就會被拋出DJava中沒有指針使用null對象引用方法或變量將產(chǎn)生該異常3114 運行下列程序,將產(chǎn)生什么異常?A ArrayIndexOutOfBoundsExceptionB NumberFormatExceptionC ArithmeticExceptionD ArithmeticException和ArrayIndexOutOfBoundsExceptionpublic class test14 public static void main(String

18、args) int x=0;int y=2/x;int z=1,2,4,6;int p=z4;C3214周12班新內(nèi)容結(jié)束33上機作業(yè)2:使用已有的bank1類自定義異常并使用步驟1:創(chuàng)建異常類OverDrawnException當取出錢后余額小于10的情況。該類繼承Excoption類,并覆蓋該類的public String toString ()方法,返回提示信息 “余額不能為負數(shù)”2: 創(chuàng)建異常類DepositException當無效錢數(shù)(小于0)存入時。該類繼承Excoption類,并覆蓋該類的public String toString ()方法,返回提示信息“存入款項不能為負數(shù)”3

19、 在Bank1類的boolean take(double num)方法中,如果發(fā)現(xiàn)(余額-num=10) 則拋出一個OverDrawnException,并在take方法在進行捕獲,捕獲后打印異常的toString返回的信息4 在void save(double num)方法中,發(fā)現(xiàn)num小于0,則拋出一個DepositException異常,并在方法頭中申明take方法自身不處理該異常,由調(diào)用它的函數(shù)處理(提示:TestBank1類的main函數(shù)處理)5 寫一個測試程序,寫代碼實現(xiàn)下列過程:新建一個帳戶,開戶信息為【“001”,“張三”,“天源路789號”,200】,存入90元,再存入-90

20、元,取款290元。捕獲所有可能發(fā)生異常提示:take方法要求返回boolean值的語句應(yīng)該放在catch語句的最后34上機作業(yè)3備注中有簡單計算器的代碼352拋出異常時,應(yīng)該使用哪個子句AthrowB catchC finallyD throwsA363自定義異常時,可通過對下列哪一項進行繼承?AError類B Applet類C Exception類D AssertionError類C374 當方法產(chǎn)生該方法無法確定如何處理的異常時,應(yīng)該如何處理?A申明異常B 捕獲異常C 拋出異常D 嵌套異常A38public class test6 public static void main(String args) method ();static void method() throws Exception try System.out.println(test6);finally System.out.println(finally);6 對下面程序描述正t確的是A代碼編譯成功,輸出test和finallyB代碼編譯成功,輸出testC代碼實現(xiàn)選項A的功能,之后Java停止運行,拋出異常,但是不進行處理D代碼不能編譯通過D3915 下列描述正確的是A 在catch代碼段中可以使用return語句返回到異常拋出點B 異常機制可以用于流程控

溫馨提示

  • 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

提交評論