項(xiàng)目6-利用異常機(jī)制處理鬧鐘軟件的運(yùn)行錯(cuò)誤_第1頁
項(xiàng)目6-利用異常機(jī)制處理鬧鐘軟件的運(yùn)行錯(cuò)誤_第2頁
項(xiàng)目6-利用異常機(jī)制處理鬧鐘軟件的運(yùn)行錯(cuò)誤_第3頁
項(xiàng)目6-利用異常機(jī)制處理鬧鐘軟件的運(yùn)行錯(cuò)誤_第4頁
項(xiàng)目6-利用異常機(jī)制處理鬧鐘軟件的運(yùn)行錯(cuò)誤_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

項(xiàng)目6利用異常機(jī)制處理鬧鐘軟件的運(yùn)行錯(cuò)誤古凌嵐張嬋羅佳人民郵電出版社Java系統(tǒng)化項(xiàng)目開發(fā)教程知識要點(diǎn)異常和異常類異常處理機(jī)制自定義異常類日志管理類引子如果程序出錯(cuò)了,怎么辦?程序運(yùn)行出現(xiàn)不正常調(diào)試程序時(shí),會出現(xiàn)程序運(yùn)行過程中,突然中止,屏幕上出現(xiàn)一大堆英文......。ATM機(jī)輸入密碼出錯(cuò)時(shí),會提示用戶重新輸入密碼,三次后將吞卡以上情況對于程序而言,就是異常Java中提供了異常處理機(jī)制6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷問題分析如果鬧鐘工具軟件運(yùn)行時(shí),中斷出現(xiàn)以下信息需要分析信息內(nèi)容,判斷出錯(cuò)的位置及原因,并予以糾正程序出錯(cuò)兩種情況:編譯時(shí)出錯(cuò)和運(yùn)行時(shí)出錯(cuò),對應(yīng)地進(jìn)行語法糾錯(cuò),或是檢查程序邏輯處理過程存在的問題對于第二種情況,可應(yīng)用Java異常處理機(jī)制來應(yīng)對6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常指發(fā)生在正常情況以外的事情,如用戶輸入錯(cuò)誤、除數(shù)為零、需要的文件不存在、文件打不開、數(shù)組下標(biāo)越界、內(nèi)存不足等。程序在運(yùn)行過程中發(fā)生這樣或那樣的錯(cuò)誤是不可避免的。在設(shè)計(jì)程序時(shí),要充分考慮到各種意外情況,不僅要保證應(yīng)用程序的正確性,而且還應(yīng)該具有較強(qiáng)的容錯(cuò)能力。將對異常情況給予恰當(dāng)處理的技術(shù),稱為異常處理6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常處理機(jī)制無論是程序本身或用戶原因出現(xiàn)的問題,都屬于程序中的異常,異常表示例外的事件。程序執(zhí)行過程中,可能出現(xiàn)的常見例外情況:非法運(yùn)算錯(cuò)誤運(yùn)行內(nèi)存不足資源耗盡錯(cuò)誤文件不存在錯(cuò)誤網(wǎng)絡(luò)無法連接6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷運(yùn)行中出現(xiàn)異常,程序至少要做到通知用戶錯(cuò)誤產(chǎn)生保存相關(guān)數(shù)據(jù)用戶可退出程序6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷對于異常的處理通常有兩種方法計(jì)算機(jī)系統(tǒng)本身直接檢測程序中的錯(cuò)誤,遇到錯(cuò)誤時(shí)終止程序運(yùn)行由程序員在程序設(shè)計(jì)中加入處理異常的功能無異常處理:使用if/switch條件分支,對于預(yù)設(shè)錯(cuò)誤進(jìn)行判斷和處理,邏輯代碼與錯(cuò)誤處理代碼相互纏繞,可讀性及可維護(hù)性較差有異常處理:Java中采用錯(cuò)誤捕獲方式(異常處理機(jī)制),提供錯(cuò)誤通知機(jī)制,并能夠?qū)τ阱e(cuò)誤進(jìn)行善后處理,使得程序不會中斷,同時(shí)減少代碼量,提供代碼可讀性可維護(hù)性6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常類基類Throwable派生出兩個(gè)直接子類:Error和Exception。Error類及其所有子類用來表示嚴(yán)重的運(yùn)行錯(cuò)誤,它定義了通常無法捕捉到的異常,例如系統(tǒng)的內(nèi)部錯(cuò)誤或資源耗盡錯(cuò)誤。如果出現(xiàn)這類錯(cuò)誤,程序員只能通知用戶并試圖中止程序,不過這種情況較少發(fā)生Exception類及其子類定義了程序可以捕捉到的異常,在編程中要處理的異常主要是這一類6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常的捕獲和處理認(rèn)識程序運(yùn)行的錯(cuò)誤類型及位置Exception類定義了程序可捕捉的異常。Exception類有兩個(gè)重要子類:RuntimeException和IOExceptionRuntimeException類的異常一般是編程原因,如:錯(cuò)誤的類型轉(zhuǎn)換(NumberFormatException)數(shù)組越界訪問(ArrayIndexOutOfBoundsException)空指針訪問(NullPointerException)除以零的算術(shù)操作(ArithmeticException)6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷IOException類的異常原因主要一些意外情況的出現(xiàn),如:試圖讀文件結(jié)尾后的數(shù)據(jù)(EOFException)試圖打開一個(gè)錯(cuò)誤的URL(UnknownHostException)試圖根據(jù)一個(gè)根本不存在的類的字符串來找一個(gè)Class對象(ClassNotFoundException)6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常示例運(yùn)行結(jié)果6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷捕獲和處理異常6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷當(dāng)異常出現(xiàn)時(shí),JVM會自動創(chuàng)建對應(yīng)地異常類對象,傳遞給運(yùn)行中的程序,并由一個(gè)稱為throwinganexception(引發(fā)異常)的操作完成6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷Java異常處理機(jī)制中的關(guān)鍵字try、catch、finallytry和catchtry{//可能引起異常的語句}catch(…){//出錯(cuò)處理程序}try-catch應(yīng)用示例如右側(cè)代碼6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷分析一下程序中可能出現(xiàn)的異常6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷對于上例出現(xiàn)的異常,可以修改為6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷多個(gè)catch的應(yīng)用示例6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷finallyfinally{//需要處理的語句}finally應(yīng)用示例:6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷try-catch-finally常用的組合用法try+catchtry+catch+finallytry+finally6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷拋出異常的方式try-catchthrowsthrow6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷try-catch示例throws示例6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷throw示例6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷自定義異常業(yè)務(wù)邏輯處理需要,如某些符合語法但不符合業(yè)務(wù)要求的情況,需要拋出對應(yīng)的異常軟件需要為用戶提供安全和直觀的異常信息,需統(tǒng)一異常展示方式自定義異常的步驟定義一個(gè)類繼承于Exception類或Throwable重載構(gòu)造函數(shù)根據(jù)需要,重寫父類的公共方法6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷自定義異常應(yīng)用示例6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷LoggingAPIJava提供了LoggingAPI(日志管理API),它可以讓程序記錄不同級別的信息,并保存在日志文件中,一旦系統(tǒng)因?yàn)槟撤N原因崩潰,通過日志就可清晰地追溯到問題所在日志信息有8個(gè)級別,按優(yōu)先級從高到低順序:SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST和ALL6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷LoggingAPI中幾個(gè)重要的類LogManager:所有Logger實(shí)例共享的類,用于維護(hù)Logger和日志服務(wù)的一組共享狀態(tài)Logger:核心類,用來記錄特定系統(tǒng)或應(yīng)用程序組件的日志消息LogRecord:用于在日志框架和單個(gè)日志Handler之間傳遞日志請求Handler:用于從Logger中獲取日志信息,并將這些信息導(dǎo)出Formatter:日志格式化處理器,為格式化LogRecords提供支持6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷日志管理類的處理流程:當(dāng)程序要?jiǎng)?chuàng)建Logger對象時(shí),如LogManager(Logger工廠)已存在當(dāng)前Logger的名字,則直接使用,否則LogManager讀取系統(tǒng)配置,設(shè)置默認(rèn)級別INFO,返回一個(gè)新的日志管理類對象。語句1就是通過這個(gè)方式創(chuàng)建一個(gè)test.log的日志管理類對象;6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷當(dāng)使用Logger來生成一條日志時(shí),首先將日志保存在LogRecord中,并由LogRecord傳送給Handler導(dǎo)出信息,信息格式則是由Formatter事先已為Handler指定好的。由于perties文件中,已設(shè)置了默認(rèn)Handler為java.util.logging.ConsoleHandler,F(xiàn)ormatter為java.util.logging.SimpleFormatter語句2執(zhí)行后,輸出INFO級別信息,且信息顯示于console(控制臺)上。6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷Logger的應(yīng)用示例運(yùn)行結(jié)果6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷自定義Logger的應(yīng)用示例運(yùn)行結(jié)果6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷6.1實(shí)戰(zhàn)任務(wù)六:

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論