




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
常用類應用單元五JavaAPI文檔使用String類StringBuffer類目錄CONTENTS123異常處理45.4異常處理
根據(jù)在程序運行過程中,經常會出現(xiàn)一些意外的情況,這些意外會導致程序出錯或者崩潰,從而影響程序的正常執(zhí)行,如果不能很好地處理這些意外情況,程序的穩(wěn)定性就會受到質疑。在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,檢查時異常又稱為非運行時異常,這樣的異常要求程序員必須在編程時進行處理,否則就會編譯不通過。例如我們在前面的學習過程中,經常在編譯的時候發(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調用了未經初始化的對象或者是不存在的對象,或是訪問或修改null對象的屬性。ClassNotFoundException沒有找到類IllegalArgumentException向方法傳遞了一個不合法或不正確的參數(shù)InputMismatchException表明Scanner獲取的內容與期望類型的模式不匹配,或者該內容超出期望類型的范圍。IllegalAccessException當前正在執(zhí)行的方法無法訪問指定類、屬性、方法或構造方法的定義ClassCastException試圖將對象強制轉換為不是實例的子類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壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供應鏈透明度教育區(qū)塊鏈技術的核心應用
- 醫(yī)療設備維修流程的優(yōu)化與實施
- 辦公自動化在醫(yī)療物資管理中的應用研究
- 以客戶為中心構建基于區(qū)塊鏈的供應金融服務體驗
- 醫(yī)療科技發(fā)展下的倫理決策新挑戰(zhàn)
- 小升初工程畫圖教案課件
- 東營吊車出租合同范例
- 中班幼兒教育心得體會模版
- 保險計劃服務合同范例
- 樂昌勞動合同范例
- 24小時陪護協(xié)議書最簡單三個步驟
- 中國血管性認知障礙診治指南(2024版)解讀
- 工業(yè)氣體儲存、經營項目環(huán)評資料環(huán)境影響
- 《相貌各異的我們》說課稿-2023-2024學年科學六年級下冊教科版
- 環(huán)境監(jiān)測檢測服務質量評估
- 高中生物(人教2019版必修2)全冊教材知識深挖(學生版+解析版)
- 年處理4萬噸丙酮-水連續(xù)精餾塔設計
- 2024年重慶市公務員錄用考試《行測》試題及答案解析
- 年終分紅方案-員工利潤分紅方案
- 商務會議花卉布置合同
- 構美-空間形態(tài)設計學習通超星期末考試答案章節(jié)答案2024年
評論
0/150
提交評論