版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、介紹jdk的API中文版給大家大小:20多兆類的眾多子類將構(gòu)成一個(gè)樹狀繼承關(guān)系1使用指南左下角為類的列表右邊為每個(gè)類的詳細(xì)介紹其中包括:類的介紹構(gòu)造函數(shù)(方法)普通函數(shù)(方法)從父類繼承來的方法整個(gè)jdk中的所有類構(gòu)成一個(gè)樹狀關(guān)系2第九章異常3異常概念程序中的錯(cuò)誤: 編譯錯(cuò)誤 運(yùn)行錯(cuò)誤異常的概念:指程序在執(zhí)行過程中出現(xiàn)程序本身沒有預(yù)料的情況,從而導(dǎo)致程序錯(cuò)誤結(jié)束使用異常機(jī)制的目的:用來在發(fā)生運(yùn)行異常時(shí)告訴程序如何控制自身的運(yùn)行,以防止錯(cuò)誤的進(jìn)一步惡化4一、異常處理機(jī)制 Java使用異常對Java程序給出一個(gè)統(tǒng)一和相對簡單的拋出和處理錯(cuò)誤的機(jī)制。如果一個(gè)方法本身能拋出異常,當(dāng)所調(diào)用的方法出現(xiàn)異常
2、時(shí),調(diào)用者可以捕獲異常使之得到處理;也可以回避異常,這時(shí)異常將在調(diào)用的堆棧中向下傳遞,直到被處理。5 異常類 在Java中,異常是一個(gè)對象,它繼承自Throwable類,所有的Throwable類的子孫類所產(chǎn)生的對象都是異常。ObjectThrowableExceptionError 異常類的繼承結(jié)構(gòu)6異常的分類ThrowableErrorExceptionRuntimeException缺省的異常處理程序由用戶捕獲或聲明并處理不做處理用戶自己產(chǎn)生的異常要處理7異常的處理程序運(yùn)行時(shí)出現(xiàn)錯(cuò)誤創(chuàng)建異常對象拋出異常對象捕獲并處理8Exception 類的主要方法public Exception( )
3、;public Exception(String s);public String toString( );public String getMessage( );9二、異常處理方法 異常處理的方法有兩種: 一種方法是使用trycatchfinally結(jié)構(gòu)對異常進(jìn)行捕獲和處理; 二種方法是通過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)對異常進(jìn)行捕獲和處理,其形式如下:try 可能出現(xiàn)異常的程序代碼catch (異常類名1 異常對象名1) 異常類名1對應(yīng)的異常處理代碼catch (異常類名2 異常對象名2) 異常類名2對應(yīng)的異常處理代碼finally 必須執(zhí)行的代碼 12trycatchfinally結(jié)構(gòu) 說明(1)將可能發(fā)生異常的程序代碼放置在try程序塊中。程序正常運(yùn)行過程中,后面的各catch塊不起任何作用。但如果該塊內(nèi)的
5、代碼出現(xiàn)了異常,系統(tǒng)將終止try塊代碼的執(zhí)行,自動跳轉(zhuǎn)到所發(fā)生的異常類對應(yīng)的catch塊中,執(zhí)行該塊中的代碼。 (2)其中的finally塊是個(gè)可選項(xiàng),如果包含有finally塊,無論異常是否發(fā)生,finally塊的代碼必定執(zhí)行。 (3)一個(gè)try塊可以對應(yīng)多個(gè)catch塊,用于對多個(gè)異常類進(jìn)行捕獲。 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ù)錯(cuò)誤:除數(shù)為0,提示信息為+e.toString();算術(shù)錯(cuò)誤:除數(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】同時(shí)處理多個(gè)異常1111異常:
7、數(shù)組越界程序結(jié)束1111異常:算數(shù)錯(cuò)誤程序結(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ù)錯(cuò)誤);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、消費(fèi)+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é)束用戶消費(fèi)800元,可優(yōu)惠64.0元程序結(jié)束19舉例:考試過程異常情況 監(jiān)考老師處理不了怎么辦?向上級報(bào)告!在java中 :拋出異常 自己不處理,由調(diào)用它的函數(shù)來處理if(passwd.length()6)throw new PasswdException();else return true;20 拋出異常選項(xiàng)在有些情況下,一個(gè)方法并不需要處理它所生成的異常,而是向上傳遞,由調(diào)用該方法的其他方法來捕獲該異常,這時(shí)就要用到throws子句。為了明確指出
11、某方法不捕獲某類異常,而讓調(diào)用該方法的其他方法捕獲該類異常,可以在申明該方法的時(shí)候,使用throws語句其格式如下: 返回類型 方法名(參數(shù)表) throws 異常類型名 聲明部分 21自定義異常類 自定義異常類可以通過繼承Exception類來實(shí)現(xiàn)。其一般形式為: class 自定義異常類名 extends Exception 異常類體; 22【任務(wù)8-4】在程序中自定義一個(gè)異常類并使用它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( 請?jiān)O(shè)置初始密碼);checkpasswd(passwd);System.out.println(密碼已經(jīng)設(shè)置);catch(PasswdException e)System.out.println(e);finallySystem.out.println(程序結(jié)束);24該任務(wù)中自己定義了一個(gè)異常如下:class PasswdException extends Exception PasswdException()System.out.println( 密碼不能小于六位);25 Exception子類的繼承關(guān)系Excep
14、tionClassNotFoundExceptionClassNotSupportedExceptionIllegalAccessExceptionInstantiationExceptionInterruptedExceptionNoSuchMethodExceptionRuntimeExceptionArithmeticExceptionArrayStoreExceptionClassCastExceptionIllegalArgumentException26Exception子類(續(xù))IllegalThreadStateExceptionNumberFormatExceptionIll
15、egalMonitorStateExceptionIndexOutOfBoundsExceptionArrayIndexOutOfBoundsExceptionStringIndexOutOfBoundsExceptionNegativeArraySizeExceptionNullPointerExceptionSecurityException 27上機(jī)作業(yè)1設(shè)計(jì)一個(gè)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程序編譯錯(cuò)誤B 程序語法錯(cuò)誤C 程序自定義的異常D 程序編譯或者運(yùn)行時(shí)發(fā)生的異常事件D295 對于try和catch子句的排列方式,下列哪一項(xiàng)是正確的?A子類異常在前,父類異常在后B 父類異常在前,子類異常在后C 只能有子類異常D 父類異常和子類異常不能同時(shí)出現(xiàn)在同一個(gè)類中A307 關(guān)于java語言中常用的異常類的說法,錯(cuò)誤的一個(gè)是A在不合法的數(shù)學(xué)運(yùn)算發(fā)生時(shí),會出現(xiàn)ArithmeticException類異常B 如果字符串轉(zhuǎn)換成數(shù)字,需要準(zhǔn)備處理NumberFormatException異常C 如果使用非法的索引值來訪問數(shù)組,A
17、rrayIndexOutOfBoundsException異常會被拋出D如果指針變量為空,NullPointException異常就會被拋出DJava中沒有指針使用null對象引用方法或變量將產(chǎn)生該異常3114 運(yùn)行下列程序,將產(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上機(jī)作業(yè)2:使用已有的bank1類自定義異常并使用步驟1:創(chuàng)建異常類OverDrawnException當(dāng)取出錢后余額小于10的情況。該類繼承Excoption類,并覆蓋該類的public String toString ()方法,返回提示信息 “余額不能為負(fù)數(shù)”2: 創(chuàng)建異常類DepositException當(dāng)無效錢數(shù)(小于0)存入時(shí)。該類繼承Excoption類,并覆蓋該類的public String toString ()方法,返回提示信息“存入款項(xiàng)不能為負(fù)數(shù)”3
19、 在Bank1類的boolean take(double num)方法中,如果發(fā)現(xiàn)(余額-num=10) 則拋出一個(gè)OverDrawnException,并在take方法在進(jìn)行捕獲,捕獲后打印異常的toString返回的信息4 在void save(double num)方法中,發(fā)現(xiàn)num小于0,則拋出一個(gè)DepositException異常,并在方法頭中申明take方法自身不處理該異常,由調(diào)用它的函數(shù)處理(提示:TestBank1類的main函數(shù)處理)5 寫一個(gè)測試程序,寫代碼實(shí)現(xiàn)下列過程:新建一個(gè)帳戶,開戶信息為【“001”,“張三”,“天源路789號”,200】,存入90元,再存入-90
20、元,取款290元。捕獲所有可能發(fā)生異常提示:take方法要求返回boolean值的語句應(yīng)該放在catch語句的最后34上機(jī)作業(yè)3備注中有簡單計(jì)算器的代碼352拋出異常時(shí),應(yīng)該使用哪個(gè)子句AthrowB catchC finallyD throwsA363自定義異常時(shí),可通過對下列哪一項(xiàng)進(jìn)行繼承?AError類B Applet類C Exception類D AssertionError類C374 當(dāng)方法產(chǎn)生該方法無法確定如何處理的異常時(shí),應(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代碼實(shí)現(xiàn)選項(xiàng)A的功能,之后Java停止運(yùn)行,拋出異常,但是不進(jìn)行處理D代碼不能編譯通過D3915 下列描述正確的是A 在catch代碼段中可以使用return語句返回到異常拋出點(diǎn)B 異常機(jī)制可以用于流程控
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年直線導(dǎo)軌副項(xiàng)目投資價(jià)值分析報(bào)告
- 2024至2030年醫(yī)用多功能電腦高頻電刀項(xiàng)目投資價(jià)值分析報(bào)告
- 加工送貨合同范本
- 年度壓痕機(jī)競爭策略分析報(bào)告
- 年度醫(yī)用材料制造競爭策略分析報(bào)告
- 年度觸片競爭策略分析報(bào)告
- 2025屆浙江省普通高校招生高一物理第一學(xué)期期中考試試題含解析
- 2025屆江蘇省宿遷市高二物理第一學(xué)期期末經(jīng)典模擬試題含解析
- 2025屆福建省重點(diǎn)中學(xué)高三物理第一學(xué)期期中聯(lián)考模擬試題含解析
- 2025屆重慶市江津中學(xué)、合川中學(xué)等七校高物理高三上期末檢測模擬試題含解析
- MT-T 1201.1-2023 煤礦感知數(shù)據(jù)聯(lián)網(wǎng)接入規(guī)范 第1部分:安全監(jiān)控
- 胎盤早剝應(yīng)急預(yù)案演練腳本
- 四川省綿陽市某中學(xué)自主招生物理試卷(含答案)
- 2023年湖南省中小學(xué)教師系列專業(yè)技術(shù)職稱職務(wù)評審表
- 我要的是葫蘆教學(xué)設(shè)計(jì)萬冬霞(五篇)
- 常見地質(zhì)災(zāi)害及其自救方法演示文稿
- 臨戰(zhàn)轉(zhuǎn)換措施
- 氧化還原反應(yīng)電化學(xué)基礎(chǔ)
- GB/T 5269-1999傳動及輸送用雙節(jié)距精密滾子鏈和鏈輪
- GB/T 30790.8-2014色漆和清漆防護(hù)涂料體系對鋼結(jié)構(gòu)的防腐蝕保護(hù)第8部分:新建和維護(hù)技術(shù)規(guī)格書的制定
- GB/T 25217.4-2019沖擊地壓測定、監(jiān)測與防治方法第4部分:微震監(jiān)測方法
評論
0/150
提交評論