Java程序設(shè)計基礎(chǔ)與實踐課件Java-8_第1頁
Java程序設(shè)計基礎(chǔ)與實踐課件Java-8_第2頁
Java程序設(shè)計基礎(chǔ)與實踐課件Java-8_第3頁
Java程序設(shè)計基礎(chǔ)與實踐課件Java-8_第4頁
Java程序設(shè)計基礎(chǔ)與實踐課件Java-8_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章 異常重點難點熟悉使用try-catch-finally塊處理異常會使用throws聲明異常會使用throw拋出異常使用Log4j記錄日志學(xué)習(xí)目標理解try-catch-finally塊處理異常理解聲明異常(throws)及拋出異常(throw)掌握異常及其分類使用Log4j記錄日志8.1典型案例【案例描述】

如果程序中出現(xiàn)了異常,而又沒有進行相應(yīng)的處理,則程序運行時異常會被Java語言默認的異常處理程序捕獲并處理。默認的處理通常是顯示異常的字符串,并從異常發(fā)生的位置打印一個堆棧跟蹤然后結(jié)束程序。運行結(jié)果如圖所示?!具\行結(jié)果】8.2異常概述

異常就是在程序的運行過程中所發(fā)生的不正常的事件,比如所需文件找不到、網(wǎng)絡(luò)連接不通或中斷、算術(shù)運算出錯(如被零除)、數(shù)組下標越界、裝載了一個不存在的類、對null對象操作、類型轉(zhuǎn)換異常等。異常會中斷正在運行的程序。舉例說明8.3異常處理

異常處理機制就像我們對平時可能會遇到的意外情況預(yù)先想好了一些處理的辦法。也就是說,在程序執(zhí)行代碼的時候,萬一發(fā)生了異常,程序會按照預(yù)定的處理辦法對異常進行處理,異常處理完畢之后,程序繼續(xù)運行。Java的異常處理是通過五個關(guān)鍵字來實現(xiàn)的:try,catch,finally,throw和throwstry-catch塊try-catch程序塊的執(zhí)行流程比較簡單。首先執(zhí)行的是try語句塊中的語句,這時可能會有以下三種情況。(1)如果try語句塊中所有語句正常執(zhí)行完畢,不會發(fā)生異常,那么catch語句塊中的所有語句都將會被忽略。(2)如果try語句塊在執(zhí)行過程中碰到異常,并且這個異常與catch語句塊中聲明的異常類型相匹配,那么在try語句塊中其余剩下的代碼都將被忽略,而相應(yīng)的catch語句塊將被執(zhí)行。匹配是指catch語句塊所處理的異常類型與所生成的異常類型完全一致或是它的父類。(3)如果try語句塊在執(zhí)行過程中碰到異常,而拋出的異常在catch語句塊里面沒有被聲明,那么程序立刻退出。try-catch塊

在catch塊中可以加入用戶自定義的處理信息,也可以調(diào)用異常對象的方法輸出異常信息,常用的方法主要有以下兩種:voidprintStackTrace():輸出異常的堆棧信息。StringgetMessage():返回異常信息描述字符串。

如果try塊在執(zhí)行過程中碰到異常,那么在try塊中其余剩下的代碼都將被忽略,系統(tǒng)會自動生成相應(yīng)的異常對象,包括異常的類型、異常出現(xiàn)時程序的運行狀態(tài)以及對該異常的詳細描述。如果這個異常對象與catch塊中聲明的異常類型相匹配,程序會把該異常對象賦給catch塊后面的異常參數(shù),相應(yīng)的catch塊將被執(zhí)行。try-catch-finally塊

在try-catch塊后加入finally塊,把該語句放入finally塊,無論是否發(fā)生異常,finally塊中的代碼總能被執(zhí)行。(1)如果try塊中所有語句正常執(zhí)行完畢,那么finally塊就會被執(zhí)行。(2)如果try塊在執(zhí)行過程中碰到異常,無論這種異常能否被catch塊捕獲到,都將執(zhí)行finally塊中的代碼。多重catch塊

一段代碼可能會引發(fā)多種類型的異常,這時,我們可以在一個try語句塊后面跟多個catch語句塊,分別處理不同的異常,但排列順序必須是從子類到父類,最后一個一般都是Exception類。因為按照匹配原則,如果把父類異常放到前面,后面的catch語句塊將得不到執(zhí)行的機會。

運行時,系統(tǒng)從上到下分別對每個catch語句塊處理的異常類型進行檢測,并執(zhí)行第一個與異常類型匹配的catch語句塊,執(zhí)行其中的一個catch語句塊之后,其后的catch語句塊都將被忽略。8.3.5聲明異?!猼hrows

如果在一個方法體中拋出了異常,我們就希望調(diào)用者能夠及時地捕獲異常。那么如何通知調(diào)用者呢?Java語言中通過關(guān)鍵字throws聲明某個方法可能拋出的各種異常。throws可以同時聲明多個異常,之間用逗號隔開。調(diào)用者通過try-catch塊捕獲并處理異常。舉例說明:8.4拋出異常8.4.1拋出異?!猼hrow在Java語言中,可以使用throw關(guān)鍵字來自行拋出異常。throw和throws的區(qū)別表現(xiàn)在以下三個方面。作用不同:throw用于程序員自行拋出異常,throws用于聲明在方法內(nèi)拋出異常。使用的位置不同:throw位于方法體內(nèi)部,可以作為單獨語句使用;throws必須跟在方法參數(shù)列表的后面,不能單獨使用。內(nèi)容不同:throw拋出一個異常對象,而且只能是一個;throws后面跟異常類,而且可以跟多個異常類。8.4.2異常的分類8.5開源日志記錄工具Log4j

有時,我們還希望以文件的形式記錄這些異常信息,甚至記錄程序正常運行的關(guān)鍵步驟信息,以便日后查看,這種情況該如何處理呢?

顯然,我們可以自行編程實現(xiàn)這一效果,但是從更注重效率和性能方面考慮,還有一個更好的選擇,那就是使用流行的開源項目:Log4j。8.5開源日志記錄工具Log4j

在Eclipse中使用Log4j的步驟比較簡單,主要分四個步驟。(1)在項目中加入Log4j所使用的JAR文件。(2)創(chuàng)建perties文件。(3)編寫perties文件,配置日志信息。(4)在程序中使用Log4j記錄日志信息。日志及分類

軟件的運行過程離不開日志。日志主要用來記錄系統(tǒng)運行過程中的一些重要的操作信息,便于監(jiān)視系統(tǒng)運行情況,幫助用戶提前發(fā)現(xiàn)和避開可能出現(xiàn)的問題或者出現(xiàn)問題后根據(jù)日志找到原因。

日志根據(jù)記錄內(nèi)容的不同,主要分成以下三類:SQL日志:記錄系統(tǒng)執(zhí)行的SQL語句。異常日志:記錄系統(tǒng)運行中發(fā)生的異常事件。業(yè)務(wù)日志:記錄系統(tǒng)運行過程,例如用戶登錄、操作記錄。日志及分類

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論