版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目6利用異常機(jī)制處理鬧鐘軟件的運(yùn)行錯(cuò)誤古凌嵐張嬋羅佳人民郵電出版社Java系統(tǒng)化項(xiàng)目開(kāi)發(fā)教程知識(shí)要點(diǎn)異常和異常類(lèi)異常處理機(jī)制自定義異常類(lèi)日志管理類(lèi)引子如果程序出錯(cuò)了,怎么辦?程序運(yùn)行出現(xiàn)不正常調(diào)試程序時(shí),會(huì)出現(xiàn)程序運(yùn)行過(guò)程中,突然中止,屏幕上出現(xiàn)一大堆英文......。ATM機(jī)輸入密碼出錯(cuò)時(shí),會(huì)提示用戶(hù)重新輸入密碼,三次后將吞卡以上情況對(duì)于程序而言,就是異常Java中提供了異常處理機(jī)制6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷問(wèn)題分析如果鬧鐘工具軟件運(yùn)行時(shí),中斷出現(xiàn)以下信息需要分析信息內(nèi)容,判斷出錯(cuò)的位置及原因,并予以糾正程序出錯(cuò)兩種情況:編譯時(shí)出錯(cuò)和運(yùn)行時(shí)出錯(cuò),對(duì)應(yīng)地進(jìn)行語(yǔ)法糾錯(cuò),或是檢查程序邏輯處理過(guò)程存在的問(wèn)題對(duì)于第二種情況,可應(yīng)用Java異常處理機(jī)制來(lái)應(yīng)對(duì)6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常指發(fā)生在正常情況以外的事情,如用戶(hù)輸入錯(cuò)誤、除數(shù)為零、需要的文件不存在、文件打不開(kāi)、數(shù)組下標(biāo)越界、內(nèi)存不足等。程序在運(yùn)行過(guò)程中發(fā)生這樣或那樣的錯(cuò)誤是不可避免的。在設(shè)計(jì)程序時(shí),要充分考慮到各種意外情況,不僅要保證應(yīng)用程序的正確性,而且還應(yīng)該具有較強(qiáng)的容錯(cuò)能力。將對(duì)異常情況給予恰當(dāng)處理的技術(shù),稱(chēng)為異常處理6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常處理機(jī)制無(wú)論是程序本身或用戶(hù)原因出現(xiàn)的問(wèn)題,都屬于程序中的異常,異常表示例外的事件。程序執(zhí)行過(guò)程中,可能出現(xiàn)的常見(jiàn)例外情況:非法運(yùn)算錯(cuò)誤運(yùn)行內(nèi)存不足資源耗盡錯(cuò)誤文件不存在錯(cuò)誤網(wǎng)絡(luò)無(wú)法連接6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷運(yùn)行中出現(xiàn)異常,程序至少要做到通知用戶(hù)錯(cuò)誤產(chǎn)生保存相關(guān)數(shù)據(jù)用戶(hù)可退出程序6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷對(duì)于異常的處理通常有兩種方法計(jì)算機(jī)系統(tǒng)本身直接檢測(cè)程序中的錯(cuò)誤,遇到錯(cuò)誤時(shí)終止程序運(yùn)行由程序員在程序設(shè)計(jì)中加入處理異常的功能無(wú)異常處理:使用if/switch條件分支,對(duì)于預(yù)設(shè)錯(cuò)誤進(jìn)行判斷和處理,邏輯代碼與錯(cuò)誤處理代碼相互纏繞,可讀性及可維護(hù)性較差有異常處理:Java中采用錯(cuò)誤捕獲方式(異常處理機(jī)制),提供錯(cuò)誤通知機(jī)制,并能夠?qū)τ阱e(cuò)誤進(jìn)行善后處理,使得程序不會(huì)中斷,同時(shí)減少代碼量,提供代碼可讀性可維護(hù)性6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常類(lèi)基類(lèi)Throwable派生出兩個(gè)直接子類(lèi):Error和Exception。Error類(lèi)及其所有子類(lèi)用來(lái)表示嚴(yán)重的運(yùn)行錯(cuò)誤,它定義了通常無(wú)法捕捉到的異常,例如系統(tǒng)的內(nèi)部錯(cuò)誤或資源耗盡錯(cuò)誤。如果出現(xiàn)這類(lèi)錯(cuò)誤,程序員只能通知用戶(hù)并試圖中止程序,不過(guò)這種情況較少發(fā)生Exception類(lèi)及其子類(lèi)定義了程序可以捕捉到的異常,在編程中要處理的異常主要是這一類(lèi)6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷異常的捕獲和處理認(rèn)識(shí)程序運(yùn)行的錯(cuò)誤類(lèi)型及位置Exception類(lèi)定義了程序可捕捉的異常。Exception類(lèi)有兩個(gè)重要子類(lèi):RuntimeException和IOExceptionRuntimeException類(lèi)的異常一般是編程原因,如:錯(cuò)誤的類(lèi)型轉(zhuǎn)換(NumberFormatException)數(shù)組越界訪問(wèn)(ArrayIndexOutOfBoundsException)空指針訪問(wèn)(NullPointerException)除以零的算術(shù)操作(ArithmeticException)6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷IOException類(lèi)的異常原因主要一些意外情況的出現(xiàn),如:試圖讀文件結(jié)尾后的數(shù)據(jù)(EOFException)試圖打開(kāi)一個(gè)錯(cuò)誤的URL(UnknownHostException)試圖根據(jù)一個(gè)根本不存在的類(lèi)的字符串來(lái)找一個(gè)Class對(duì)象(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會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)地異常類(lèi)對(duì)象,傳遞給運(yùn)行中的程序,并由一個(gè)稱(chēng)為throwinganexception(引發(fā)異常)的操作完成6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷Java異常處理機(jī)制中的關(guān)鍵字try、catch、finallytry和catchtry{//可能引起異常的語(yǔ)句}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)致的程序中斷對(duì)于上例出現(xiàn)的異常,可以修改為6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷多個(gè)catch的應(yīng)用示例6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷finallyfinally{//需要處理的語(yǔ)句}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ǔ)法但不符合業(yè)務(wù)要求的情況,需要拋出對(duì)應(yīng)的異常軟件需要為用戶(hù)提供安全和直觀的異常信息,需統(tǒng)一異常展示方式自定義異常的步驟定義一個(gè)類(lèi)繼承于Exception類(lèi)或Throwable重載構(gòu)造函數(shù)根據(jù)需要,重寫(xiě)父類(lèi)的公共方法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),它可以讓程序記錄不同級(jí)別的信息,并保存在日志文件中,一旦系統(tǒng)因?yàn)槟撤N原因崩潰,通過(guò)日志就可清晰地追溯到問(wèn)題所在日志信息有8個(gè)級(jí)別,按優(yōu)先級(jí)從高到低順序:SEVERE、WARNING、INFO、CONFIG、FINE、FINER、FINEST和ALL6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷LoggingAPI中幾個(gè)重要的類(lèi)LogManager:所有Logger實(shí)例共享的類(lèi),用于維護(hù)Logger和日志服務(wù)的一組共享狀態(tài)Logger:核心類(lèi),用來(lái)記錄特定系統(tǒng)或應(yīng)用程序組件的日志消息LogRecord:用于在日志框架和單個(gè)日志Handler之間傳遞日志請(qǐng)求Handler:用于從Logger中獲取日志信息,并將這些信息導(dǎo)出Formatter:日志格式化處理器,為格式化LogRecords提供支持6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷日志管理類(lèi)的處理流程:當(dāng)程序要?jiǎng)?chuàng)建Logger對(duì)象時(shí),如LogManager(Logger工廠)已存在當(dāng)前Logger的名字,則直接使用,否則LogManager讀取系統(tǒng)配置,設(shè)置默認(rèn)級(jí)別INFO,返回一個(gè)新的日志管理類(lèi)對(duì)象。語(yǔ)句1就是通過(guò)這個(gè)方式創(chuàng)建一個(gè)test.log的日志管理類(lèi)對(duì)象;6.1實(shí)戰(zhàn)任務(wù)六:防止背景圖片找不到而導(dǎo)致的程序中斷當(dāng)使用Logger來(lái)生成一條日志時(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語(yǔ)句2執(zhí)行后,輸出INFO級(jí)別信息,且信息顯示于console(控制臺(tái))上。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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年百色職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考題庫(kù)有答案解析
- 2026年河北美術(shù)學(xué)院高職單招職業(yè)適應(yīng)性考試備考題庫(kù)有答案解析
- 2026年安徽電氣工程職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試備考題庫(kù)帶答案解析
- 2026年廣州科技貿(mào)易職業(yè)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 2026年廣東機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試參考題庫(kù)帶答案解析
- 體檢中心合作協(xié)議2025年
- 2026年福建體育職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試參考題庫(kù)有答案解析
- 2026年安徽商貿(mào)職業(yè)技術(shù)學(xué)院?jiǎn)握芯C合素質(zhì)考試備考題庫(kù)帶答案解析
- 數(shù)字貨幣交易服務(wù)合同2025年合規(guī)要求
- 2026年黑龍江商業(yè)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性考試備考試題帶答案解析
- 腫瘤患者鼻飼的護(hù)理個(gè)案
- 《社區(qū)矯正法》教學(xué)課件
- 產(chǎn)品折扣管理辦法
- 預(yù)激綜合征麻醉管理要點(diǎn)
- 2025公需課《人工智能賦能制造業(yè)高質(zhì)量發(fā)展》試題及答案
- 天津市和平區(qū)天津益中學(xué)校2021-2022學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題【帶答案】
- TCALC 003-2023 手術(shù)室患者人文關(guān)懷管理規(guī)范
- 關(guān)鍵對(duì)話(huà)-如何高效能溝通
- 村級(jí)組織工作制度
- 安全文明施工措施費(fèi)用支付計(jì)劃三篇
- 人教版九年級(jí)化學(xué)導(dǎo)學(xué)案全冊(cè)
評(píng)論
0/150
提交評(píng)論