![Java網(wǎng)絡程序設計 課件 單元5-04 異常處理_第1頁](http://file4.renrendoc.com/view14/M0A/26/2E/wKhkGWaiI4SAZpzsAAGh7ClrfLY502.jpg)
![Java網(wǎng)絡程序設計 課件 單元5-04 異常處理_第2頁](http://file4.renrendoc.com/view14/M0A/26/2E/wKhkGWaiI4SAZpzsAAGh7ClrfLY5022.jpg)
![Java網(wǎng)絡程序設計 課件 單元5-04 異常處理_第3頁](http://file4.renrendoc.com/view14/M0A/26/2E/wKhkGWaiI4SAZpzsAAGh7ClrfLY5023.jpg)
![Java網(wǎng)絡程序設計 課件 單元5-04 異常處理_第4頁](http://file4.renrendoc.com/view14/M0A/26/2E/wKhkGWaiI4SAZpzsAAGh7ClrfLY5024.jpg)
![Java網(wǎng)絡程序設計 課件 單元5-04 異常處理_第5頁](http://file4.renrendoc.com/view14/M0A/26/2E/wKhkGWaiI4SAZpzsAAGh7ClrfLY5025.jpg)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
常用類應用單元五JavaAPI文檔使用String類StringBuffer類目錄CONTENTS123異常處理45.4異常處理
根據(jù)在程序運行過程中,經(jīng)常會出現(xiàn)一些意外的情況,這些意外會導致程序出錯或者崩潰,從而影響程序的正常執(zhí)行,如果不能很好地處理這些意外情況,程序的穩(wěn)定性就會受到質(zhì)疑。在Java語言中,將這些程序意外稱為異常,出現(xiàn)異常時的處理稱為異常處理,合理的異常處理可以使整個項目更加穩(wěn)定,也使項目中正常的邏輯代碼和錯誤處理的代碼實現(xiàn)分離,便于代碼的閱讀和維護。5.4.1異常概述publicclassTestEx{publicstaticvoidmain(String[]args){Stringteachers[]={"柳海龍","孫傳杰","孫悅"};for(inti=0;i<4;i++){System.out.println(teachers[i]);}System.out.println("演示完畢!");}}示例代碼:運行結果:程序出錯的原因很簡單,程序員定義的數(shù)組長度是3,而在使用數(shù)組時,卻訪問了下標為3的第4個數(shù)組元素,所以程序出現(xiàn)異常。5.4.1異常概述所有異常都繼承自java.lang.Throwable類,Throwable類有兩個直接子類,Error類和Exception類。Java異常的層次結構如圖所示。Java異常層次結構圖5.4.1異常概述Exception,Error表示Java應用程序本身無法恢復的嚴重錯誤,而不是這種Java應用程序無法恢復的嚴重錯誤,我們稱為異常。異常可分為運行時異常(RuntimeException)和檢查時異常(CheckedException)兩種。RuntimeException,運行時異常即程序運行時拋出的異常,不要求程序員在編程時必須對這些異常進行處理,也能編譯通過。前面數(shù)組下標越界異常就是運行時異常。CheckedException,檢查時異常又稱為非運行時異常,這樣的異常要求程序員必須在編程時進行處理,否則就會編譯不通過。例如我們在前面的學習過程中,經(jīng)常在編譯的時候發(fā)生類找不到的情況,這就是一個典型的檢查時異常。5.4.2異常處理所謂異常處理,就是發(fā)生異常之后,程序員要求程序該如何操作。Java對異常的處理采取的是拋出、捕獲的機制,即由一段可能拋出異常的程序拋出異常(也可能正常執(zhí)行,不拋出異常),在這段程序外有專門的異常處理程序進行處理,針對拋出的不同類型的異常捕獲后進行處理,這就是Java異常處理機制。try{//可能拋出異常的語句塊}catch(SomeExceptionle)//SomeException1特指某些異常,非Java中具體異常,下同{//當捕獲到Somefixception1類型的異常時執(zhí)行的語句塊}catch(SomeException2e){//當捕獲到SomeException2類型的異常時執(zhí)行的語句塊}finally{//無論是否發(fā)生異常都會執(zhí)行的代碼}語法格式:5.4.2異常處理則修改實例代碼如下:publicclassTestEx10{publicstaticvoidmain(Strmg[]args){try{Stringteachers[]={"柳海龍","孫傳杰","孫悅"};for(inti=0;i<4;i++){System.out.println(teachers[i]);}}catch(Exceptione){System.out.println("數(shù)組下標越界,請修改程序!");//return; //finally語句塊仍然執(zhí)行//System.exit(l);//直接退出Java虛擬機,finally語句塊不再執(zhí)行}finally{System.out.println("顯示完畢!");}}}運行結果:5.4.3異常使用注意事項我們在捕獲異常的時候,應該按照“從小到大”的順序捕獲異常,這樣才能保證逐層捕獲,從而避免父類的大的異常進行了捕獲,導致子類的小的異常無法進行捕獲的情況。異常類異常說明ArrayIndexOutOfBoundsException在訪問數(shù)組元素時超過了一開始聲明這個數(shù)組時的范圍ArithmeticException發(fā)生在數(shù)字的算術運算時的異常NullPointerException調(diào)用了未經(jīng)初始化的對象或者是不存在的對象,或是訪問或修改null對象的屬性。ClassNotFoundException沒有找到類IllegalArgumentException向方法傳遞了一個不合法或不正確的參數(shù)InputMismatchException表明Scanner獲取的內(nèi)容與期望類型的模式不匹配,或者該內(nèi)容超出期望類型的范圍。IllegalAccessException當前正在執(zhí)行的方法無法訪問指定類、屬性、方法或構造方法的定義ClassCastException試圖將對象強制轉(zhuǎn)換為不是實例的子類SQLException提供關于數(shù)據(jù)庫訪問錯誤或其他錯誤信息的異常IOException發(fā)生某種I/O異常常見的異常5.4.4拋出異常在Java語言中,可以使用throw關鍵字手工拋出一個異常。publicclassTestEx15{publicstaticvoidmain(String[]args){System.out.print("Now");try{System.out.print("is");thrownewNullPointerException("the"); //拋出
一個空指針異常,指定信息為“the”//System.out.print("此句不會被執(zhí)行!");}catch(NullPointerExceptione){ //捕獲拋出的空指針異常System.out.print(e.getMessage());}System.out.print(utime.\n");}}示例代碼:運行結果:5.4.5自定義異常類自定義異常,顧名思義,就是程序員自己定義的異常。當Java類庫中的異常不能滿足程序需求時,程序員可以自己定義并使用異常。由于Exception類是Java中所有異常類的父類,所以我們定義自定義異常類時,通常繼承自該類?,F(xiàn)在我們定義一個自定義異常類AgeException,它有一個構造函數(shù)和一個toString()方法,具體代碼如下://自定義異常類,處理年齡大于120或小于0的PersonclassAgeExceptionextendsException{privateStringmessage;publicAgeException(intage) //自定義異常類構造方法{message="年齡設置為:"+age+"不合理!";}publicStringtoString() //自定義異常類toString()方法{returnmessage;}}5.4.5自定義異常類接下來我們通過Person類和TestEx19這兩個類,來使用這個自定義異常類。classPerson{privateintage;//聲明setAge(intage)方法可能拋出AgeException自定義異常publicvoidsetAge(intage)throwsAgeException{if(age<=0||age>=120){thrownewAgeException(age);//拋出
AgeException自定義異常}else{this.age=age;}}publicintgetAge(){returnage;}}publicclassTestEx19{publicstaticvoidmain(String[]args){Personp1=newPerson();Personp2=newPerson();try{pl.setAge(150); //會拋出AgeException自定義異常System.out.println("正確輸出年齡為:"+pl.getAge());}catch(AgeExceptione){//進行異常捕獲處理System.out.println(e.to
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程施工合同索賠流程及賠償標準規(guī)范文本
- 2025年度電子工程師研發(fā)項目合作合同
- 2025年度酒店物業(yè)管理合同規(guī)范文本
- 遼寧2024年渤海大學附屬高級中學招聘人筆試歷年參考題庫附帶答案詳解
- 菏澤2025年山東菏澤醫(yī)專附屬醫(yī)院招聘精神科住院醫(yī)師2人筆試歷年參考題庫附帶答案詳解
- 湖南2025年湖南省住房和城鄉(xiāng)建設廳所屬事業(yè)單位選調(diào)筆試歷年參考題庫附帶答案詳解
- 溫州2024年浙江溫州蒼南縣質(zhì)量技術監(jiān)督檢測院招聘食品檢測工作人員筆試歷年參考題庫附帶答案詳解
- 浙江浙江省國際經(jīng)濟貿(mào)易學會招聘筆試歷年參考題庫附帶答案詳解
- 2025年中國宮燈罩市場調(diào)查研究報告
- 2025年中國半自動內(nèi)圓切片機市場調(diào)查研究報告
- 2024年全國執(zhí)業(yè)獸醫(yī)考試真題及答案解析
- 社區(qū)成人血脂管理中國專家共識(2024年)
- 廣東省2024年普通高中學業(yè)水平合格性考試語文仿真模擬卷01(解析版)
- 信息科技重大版 七年級上冊 互聯(lián)網(wǎng)應用與創(chuàng)新 第1單元 單元教學設計 互聯(lián)網(wǎng)時代
- CR200J動力集中動車組拖車制動系統(tǒng)講解
- 2024年湖南高速鐵路職業(yè)技術學院單招職業(yè)適應性測試題庫參考答案
- 腎性高血壓的護理
- 國際貨物運輸委托代理合同(中英文對照)全套
- 全面新編部編版四年級下冊語文教材解讀分析
- 《建筑工程質(zhì)量檢驗評定標準》
- 教學能力大賽-教學實施報告《大學英語2c》
評論
0/150
提交評論