Java開發(fā)綜合實戰(zhàn) 課件 【ch04】異常處理_第1頁
Java開發(fā)綜合實戰(zhàn) 課件 【ch04】異常處理_第2頁
Java開發(fā)綜合實戰(zhàn) 課件 【ch04】異常處理_第3頁
Java開發(fā)綜合實戰(zhàn) 課件 【ch04】異常處理_第4頁
Java開發(fā)綜合實戰(zhàn) 課件 【ch04】異常處理_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章Java開發(fā)綜合實戰(zhàn)異常處理計算機專業(yè)·任務驅(qū)動應用型教材01認識異常認識異常異常的類型在Java中,所有的異常均被作為對象來處理,程序發(fā)生異常時會產(chǎn)生異常類對象。java.lang.Throwable類是Java中所有錯誤類或異常類的根類,包含兩個重要的子類,即Error類和Exception類。認識異常異常的類型1Error類。Error類是程序無法處理的錯誤,表示在應用程序運行時出現(xiàn)的嚴重錯誤,例如,Socket編程時端口被占用、JVM可用內(nèi)存不足等錯誤。這些錯誤不是異常,而是脫離程序員控制的問題,遇到這些錯誤,JVM會選擇終止線程。認識異常異常的類型2Exception類。Exception類是程序本身可以處理的異常,可分為運行時異常與編譯異常,可以被捕獲并處理。認識異常異常的類型運行時異常是指RuntimeException類及其子類的異常。這類異常通常由程序邏輯錯誤產(chǎn)生,是可以避免的異常,例如,對象沒有正常初始化、數(shù)組元素引用越界等。這些異常在編寫代碼時不會被編譯器檢測出來,可以不被捕獲。認識異常異常的類型編譯異常是指在Exception類中除RuntimeException類以外的異常類及其子類的異常,通常是無法預見的,由用戶的錯誤或問題引起,例如,要打開的文件不存在。針對這種異常,在編譯時,編譯器會提示需要捕獲。認識異常異常的類型在Java中,編譯異常必須被捕獲;不需要被捕獲的異常包括Error類及其子類的異常以及運行時異常。需要說明的是,產(chǎn)生運行時異常通常表明程序的設計或?qū)崿F(xiàn)出現(xiàn)了問題,例如,除法運算的程序,在除數(shù)不為0時可正常運行。如果對這種問題不做處理,可能會導致程序在運行時拋出異常。認識異常常見的異常類Java中常見的異常類如表4-1所示。認識異常常見的異常類認識異常異常處理流程為了保證程序在出現(xiàn)異常之后仍然可以正確運行,在程序設計過程中使用如下語法結(jié)構(gòu)進行異常處理:認識異常異常處理流程其中,try代碼塊中包含可能拋出異常的代碼,是捕獲并處理異常的范圍。catch子句有一個參數(shù)用于聲明可捕獲異常的類型,如果在運行過程中,try代碼塊中產(chǎn)生了異常,就自動實例化相應的異常類對象,然后匹配第1個catch子句中的異常類型,如果匹配,則執(zhí)行對應的異常處理代碼進行處理;如果不匹配,則與下一個catch子句中的異常類型進行匹配。認識異常異常處理流程認識異常異常處理流程語法結(jié)構(gòu)中的finally子句是異常處理的出口,無論是否發(fā)生了異常,該子句中的代碼都會被執(zhí)行。該子句能夠?qū)Τ绦虻臓顟B(tài)進行統(tǒng)一的管理,通常用于清理資源和關閉對象。如果沒有必要,finally子句也可以省略。認識異常Exception類的常用方法Exception類提供了一些方法,用于輸出產(chǎn)生異常的原因的描述,方便程序開發(fā)人員排查產(chǎn)生異常的原因,修復程序。Exception類的常用方法如表4-2所示。認識異常Exception類的常用方法認識異常Exception類的常用方法從表4-2中可以看出,Exception類提供了4種形式的構(gòu)造方法。其中,使用Exception(Stringmsg)構(gòu)造方法,可以將異常對應的描述作為字符串參數(shù)傳入構(gòu)造方法,使用Exception類的getMessage()方法可以獲取該信息。02處理異常處理異常處理編譯異常編譯異常必須由try-catch語句進行捕獲和處理,或包含在方法聲明的throws列表中,由方法的調(diào)用者進行捕獲和處理,否則程序不能通過編譯。捕獲異常的語法格式是一個完整的結(jié)構(gòu),try、catch和finally3個子句不能單獨使用,但可以組合為try-catch、try-catch-finally或try-finally結(jié)構(gòu)使用。處理異常處理編譯異常在ATM上只能取整數(shù)金額。假設Mark的某個銀行賬戶的余額有1203.68元,他想一次性全部取出并注銷賬戶。本案例模擬在ATM上取款,在Console窗格中輸入取款金額,產(chǎn)生數(shù)字格式轉(zhuǎn)換異常的場景。處理異常處理編譯異常(1)新建一個項目BankAccount,在其中添加一個名為BankAccount的類。(2)引入包,在BankAccount類中添加main()方法,編寫代碼。具體代碼如下:處理異常處理編譯異常處理異常處理編譯異常處理異常處理編譯異常(3)運行程序,在Console窗格中輸入取款金額,如果輸入的取款金額不是整數(shù),則產(chǎn)生異常并輸出異常信息,如圖4-5所示。如果輸入的取款金額是大于賬戶余額的整數(shù),則輸出錯誤提示信息,如圖4-6所示。如果輸入的取款金額是小于賬戶余額的整數(shù),則輸出取款后的賬戶余額,如圖4-7所示。處理異常處理編譯異常處理異常在方法中拋出異常如果程序中的異常是在某個方法中產(chǎn)生的,但不希望在當前方法中處理這個異常,則可以借助throws和throw關鍵字拋出這個異常類對象。由于異常類對象本身帶有類型信息,因此只需要在上層捕獲,就可以在任何地方拋出。處理異常在方法中拋出異常1使用throws關鍵字拋出異常在定義方法時使用throws關鍵字聲明,表示在該方法中可能拋出異常,但不處理異常,而是交給方法的調(diào)用者進行處理。語法格式如下:處理異常在方法中拋出異常如果要在該方法中拋出多個異常,則需要使用逗號分隔異常類型名。在調(diào)用使用throws關鍵字聲明的方法時,不管該方法是否會產(chǎn)生異常,調(diào)用處都應該采用try-catch語句對異常進行處理。如果在定義main()方法時使用throws關鍵字聲明,則拋出的異常只能交給JVM處理。處理異常在方法中拋出異常2使用throw關鍵字拋出異常異常類對象通常是在產(chǎn)生異常時,由JVM自動實例化的。如果用戶要手動實例化異常類對象,就需要使用throw關鍵字。將throw關鍵字用在方法體內(nèi),不僅可拋出Exception類中的子類異常,還可以拋出自定義異常,由方法體內(nèi)的語句進行處理。處理異常在方法中拋出異常通過throw關鍵字拋出異常后,如果要在上一級代碼中捕獲并處理異常,首先需要在拋出異常的方法聲明中使用throws關鍵字表明要拋出的異常,然后在上一級代碼中使用try-catch語句捕獲異常。處理異常自定義異常類在實際應用中,Java提供的異常類有時并不能滿足程序的異常處理需求,例如,電話號碼中包含字符,輸入的年齡為負數(shù)等。在這種情況下,用戶可以根據(jù)程序的邏輯自定義異常類,以捕獲和處理程序特有的運行異常。處理異常自定義異常類如果要自定義編譯異常類,則可以通過繼承Exception類的方式創(chuàng)建,具體的語法格式如下:處理異常自定義異常類如果要自定義運行時異常類,則可以通過繼承RuntimeException類的方式創(chuàng)建,具體的語法格式如下:處理異常自定義異常類與其他類相同,自定義異常類的類體中包括構(gòu)造方法、成員變量和成員方法。自定義異常類的構(gòu)造方法一般用于指定該異常的描述信息,例如:處理異常自定義異常類(1)新建一個項目WeightLimite,在其中添加一個名為WeightException的自定義異常類。具體代碼如下:處理異常自定義異常類(2)添加一個名為Lorry的類,在類體中定義成員變量和成員方法。具體代碼如下:處理異常自定義異常類處理異常自定義異常類(3)在項目中添加一個名為TestWeight的類,編寫main()方法實例化

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論