第五章異常處理ppt課件.ppt_第1頁
第五章異常處理ppt課件.ppt_第2頁
第五章異常處理ppt課件.ppt_第3頁
第五章異常處理ppt課件.ppt_第4頁
第五章異常處理ppt課件.ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第5章異常處理 5 1程序錯誤與處理5 2Java的異常處理 5 1程序錯誤與處理 5 1 1程序錯誤 發(fā)現(xiàn)時刻及錯誤處理原則5 1 2面向過程與面向?qū)ο笳Z言的錯誤處理方式比較5 1 3Java的錯誤和異常 5 1 1程序錯誤 發(fā)現(xiàn)時刻及錯誤處理原則 語法錯違反語法規(guī)范的錯誤稱為語法錯 在編譯時發(fā)現(xiàn) 語義錯在語義上存在錯誤 則稱為語義錯 運行時才能被發(fā)現(xiàn) 邏輯錯系統(tǒng)無法發(fā)現(xiàn)邏輯錯 5 1 2面向過程與面向?qū)ο笳Z言的錯誤處理方式比較 面向過程語言錯誤處理方式的缺陷不進行范圍檢查采用if語句進行事先判斷以防止出現(xiàn)錯誤 面向?qū)ο笳Z言異常處理的思想異常處理機制的優(yōu)越之處體現(xiàn)在以下兩方面 從語法上看 異常處理語句將程序正常代碼與錯誤處理代碼分開 使程序結(jié)構(gòu)清晰 算法重點突出 可讀性強 從運行效果看 異常處理語句使程序具有處理錯誤的能力 5 1 3Java的錯誤和異常 Java語言是安全的Java語言提供嚴密的語法規(guī)則 Java在編譯和運行時嚴格檢查錯誤 Java提供異常處理機制 Java提供內(nèi)存自動管理方式 錯誤與異常錯誤 error 指程序運行時遇到的硬件或操作系統(tǒng)的錯誤 異常 exception 指在硬件和操作系統(tǒng)正常時 程序遇到的運行錯 圖5 1Java程序發(fā)現(xiàn)錯誤和異常 3 錯誤類和異常類 Error錯誤類 JVM生成并拋出 Exception異常類除數(shù)為0的算術(shù)異常 數(shù)組下標越界異常 空指針異常等 例5 1 發(fā)現(xiàn)除數(shù)為0錯 運行時能夠發(fā)現(xiàn)整數(shù)除法中除數(shù)為0的語義錯運行時不能發(fā)現(xiàn)浮點數(shù)除法中除數(shù)為0的語義錯 例5 2 發(fā)現(xiàn)數(shù)組下標越界的語義錯 4 程序?qū)﹀e誤與異常的三種處理方式 程序不能處理錯誤程序應(yīng)避免而不捕獲的異常 如除數(shù)為0 數(shù)組下標越界等 必須捕獲的異常 5 2Java的異常處理 5 2 1異常類說明5 2 2異常處理語句5 2 3拋出異常5 2 4自定義異常類 Java把程序運算中可能遇到的錯誤分為兩類 一類是非致命性的 通過某種修正后程序還能繼續(xù)執(zhí)行 這類錯誤稱作異常 另一類是致命性的 即程序遇到了非常嚴重的不正常狀態(tài) 不能簡單地恢復(fù)執(zhí)行 這就是錯誤 Java提供了異常處理機制 在Exception類中定義了程序產(chǎn)生異常的條件 對待異常通常并不是簡單地結(jié)束程序 而是轉(zhuǎn)去執(zhí)行某段特殊代碼處理這個異常 設(shè)法恢復(fù)程序繼續(xù)執(zhí)行 Java實現(xiàn)了C 風格的異常 當程序中發(fā)生異常時 稱程序產(chǎn)生了一個異常事件 相應(yīng)地生成異常對象 生成的異常對象傳遞給Java運行時系統(tǒng) 異常產(chǎn)生和提交的這一過程稱為拋出 異常發(fā)生時 Java運行時系統(tǒng)從生成對象的代碼塊開始 沿方法的調(diào)用棧逐層回溯 尋找相應(yīng)的處理代碼 并把異常對象交給該方法處理 這一過程稱為捕獲 所有的包中都定義了異常類和錯誤類 Exception類是所有異常的父類Error類是所有錯誤的父類 這兩個類同時又是Throwable的子類 異常和錯誤類的層次結(jié)構(gòu)如圖所示 5 2 1異常類說明 Exception異常類publicclassThrowableimplementsSerializable publicThrowable publicThrowable Stringmessage publicStringgetMessage 獲得異常信息publicStringtoString 獲得異常對象的描述信息publicvoidprintStackTrace 顯示異常棧跟蹤信息 publicclassExceptionextendsThrowable publicException publicException Strings 2 RuntimeException運行異常類 算術(shù)異常ArithmeticException 除數(shù)為0空對象異常NullPointerExceptioninta null a 0 1 對空數(shù)組中的元素進行操作 產(chǎn)生空對象異常Stringstr null System out println str length 調(diào)用空對象的方法 產(chǎn)生空對象異常類型強制轉(zhuǎn)換異常ClassCastExceptionObjectobj newObject Stringstr String obj 2 RuntimeException運行異常類 負數(shù)組長度異常NegativeArraySizeExceptioninta newint 1 產(chǎn)生負數(shù)組長度異常數(shù)組下標越界異常ArrayIndexOutOfBoundsExceptioninta newint 1 a 1 1 產(chǎn)生數(shù)組下標越界異常數(shù)值格式異常NumberFormatExceptionintj Integer parseInt abc 產(chǎn)生數(shù)值格式異常 5 2 2異常處理語句 異常處理語句語法try 語句1 存在潛在異常的代碼 catch 異常類異常對象 語句2 捕獲到異常并進行處理的代碼 finally 語句3 最后必須執(zhí)行的代碼 無論是否捕獲到異常 例5 3 異常的捕獲和處理 圖5 4異常處理語句的執(zhí)行流程 正常情況下 try 無異常 跳過catch finally 繼續(xù)Catch子句匹配規(guī)則 拋出異常對象與catch子句參數(shù)類型相同拋出異常對象是catch子句參數(shù)類的子類按照先后次序捕獲拋出的異常對象 只捕獲一次 多個catch子句需要按照異常類從子類到父類的次序依次排列 finally語句是最后必須執(zhí)行的代碼 無論是否產(chǎn)生異常 publicclassTry2 publicstaticvoidmain Stringargs inti 0 inta 5 6 7 8 for i 0 i 5 i try System out print a i i a i i catch ArrayIndexOutOfBoundsExceptione System out print 捕獲數(shù)組下標越界異常 catch ArithmeticExceptione System out print 捕獲算術(shù)異常 catch Exceptione System out print 捕獲 e getMessage 異常 顯示異常信息 finally System out println i i System out println 繼續(xù) 5 2 3拋出異常 拋出自定義異常對象的throw語句throw異常對象publicvoidset intage if age 0 拋出異常 例5 5 拋出自定義異常對象 2 方法聲明拋出異常的throws子句 修飾符 返回值類型方法 參數(shù)列表 throws異常類 publicstaticintparseInt Strings throwsNumberFormatException 例5 6 聲明拋出異常的方法與方法調(diào)用者處理異常 構(gòu)造方法和重載的set 方法聲明拋出異常 main 方法聲明拋出異常交由系統(tǒng)處理 5 2 4自定義異常類 例5 7 自定義異常類 publicclassIllegalAgeExceptionextendsException 無效年齡異常類 publicIllegalAgeException Strings publicIllegalAgeException 捕獲自定義異常類 而非Exception類catch IllegalAgeExceptione e printStackTrace 顯示異常棧跟蹤信息 理解Java異常處理模型三種操作 聲明異常 拋出異常和捕獲異常 1 聲明異常在方法聲明中使用throws關(guān)鍵字聲明異常publicvoidmyMethod throwsIOException 2 拋出異常發(fā)現(xiàn)錯誤后 創(chuàng)建異常實例 拋出異常thrownewIllegalArgumentExcep

溫馨提示

  • 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

提交評論