java程序設(shè)計-異常處理_第1頁
java程序設(shè)計-異常處理_第2頁
java程序設(shè)計-異常處理_第3頁
java程序設(shè)計-異常處理_第4頁
java程序設(shè)計-異常處理_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Java程序設(shè)計第6章異常處理本章介紹Java

語言中的異常處理。6.1

異常處理6.2

自定義異常6.3

斷言及程序的測試6.4

程序的調(diào)試2htt

唐大仕Java程序設(shè)計異常處理??????????????????????????????????????3htt

唐大仕Java程序設(shè)計異常異常(exception)又稱為例外、差錯、違例對應(yīng)著Jav

a運行錯誤處理機制基本寫法ex){異常處理語句組;try{語句組}catch(Exception?}示例:ExceptionForNum.java4htt

唐大仕Java程序設(shè)計傳統(tǒng)的語言如何處理在一些傳統(tǒng)的語言(如C

語言中)if語句來判斷是否出現(xiàn)了例外全程變量ErrNo但這有幾個缺點正常處理與異常處理的代碼同樣處理可讀性(readability)差每次調(diào)用一個方法時都進行錯誤檢查可

性(

maintainability

)差錯誤由誰處理不請職責(zé)不清5htt

唐大仕Java程序設(shè)計Java中的異常處理Java

中處理異常拋出(throw)異常運行時系統(tǒng)在調(diào)用棧中查找從生成異常的方法開始進行回溯,直到找到:捕獲(catch)異常的代碼6htt

唐大仕Java程序設(shè)計相關(guān)的語句拋出異常throw

異常對象;捕獲異常try{語句組}catch(異常類名 異常形式參數(shù)名){異常處理語句組;}catch(異常類名 異常形式參數(shù)名){異常處理語句組;}finally{異常處理語句組;}其中,catch語句可以0至多個,可以沒有finally語句7htt

唐大仕Java程序設(shè)計異常的分類ThrowableError:

JVM的錯誤Exception:異常一般所說的異常是指Exception及其子類8htt

唐大仕Java程序設(shè)計Exception類Exception類構(gòu)造方法public

Exception();public

Exception(String

message);Exception(String

message,

Throwable

cause)

;方法getMessage()getCause()printStackTrace()9htt

唐大仕Java程序設(shè)計多異常的處理多異常的處理子類異常要排在父類異常的前面finally語句無論是否有異常都要執(zhí)行即使其中有break,return等語句在編譯時,finally部分代碼生成了多遍例TestTryFinally.java10htt

唐大仕Java程序設(shè)計受檢的異常Exception分兩種RuntimeException

及其子類,可以不明確處理否則,稱為受檢的異常(checked

Exception)受檢的異常,要求明確進行語法處理要么捕(catch)要么拋(throws):在方法的簽名后面用throws

x來在子類中,如果要覆蓋父類的一個方法,若父類中的方法

了throws異常,則子類的方法也可以throws異??梢話伋鲎宇惍惓#ǜ唧w的異常),但不能拋出更一般的異常示例:ExceptionTrowsToOther.java11htt

唐大仕Java程序設(shè)計再談try…with…resourcetry(類型 變量名

=

new

類型()

){。。。}自動添加了finally{

變量.close();

}不論是否出現(xiàn)異常,都會執(zhí)行示例:TryWithResourcesTest.java12htt

唐大仕Java程序設(shè)計自定義異常類??????????????????????????????????????13htt

唐大仕Java程序設(shè)計創(chuàng)建用戶自定義異常類創(chuàng)建用戶自定義異常時(1)

繼承自Exception類或某個子Exception類(2)

定義屬性和方法,或重載父類的方法?14htt

唐大仕Java程序設(shè)計重拋異常及異常對于異常,不僅要進行捕獲處理,有時候還需要將此異常進一步傳遞給調(diào)用者,以便讓調(diào)用者也能感受到這種異常。這時可以在catch語句塊或finally語句塊中采取以下三種方式:(1)將當(dāng)前捕獲的異常再次拋出:throw

e;(2)重新生成一個異常,并拋出,如:throw

new

Exception("some

message");(3)重新生成并拋出一個新異常,該異常中包含了當(dāng)前異常的信息,如:throw

new

Exception("some

message",e);可用e.getCause()

來得到

異常例:ExceptionCause.java15htt

唐大仕Java程序設(shè)計斷言及程序的測試??????????????????????????????????????16htt

唐大仕Java程序設(shè)計斷言斷言(assertion)assert的格式是:assert

表達式;assert

表達式:信息;在調(diào)試程序時如果表達式不為true,則程序會產(chǎn)生異常,并輸出相關(guān)的錯誤信息示例:Assertion.java17htt

唐大仕Java程序設(shè)計Assert的編譯及運行編譯只有在JD

K

1.4

及以上的版本中才可以使用斷言。具體地說,在早期的J

DK

版本(1.4)中編譯時,要通過-source選項來指明版本,如:javac

-deprecation

-source

1.4

-classpath

.

Assertion.java運行在運行時,要使assert起作用,則在java命令中,使用選項(-ea,即-enableassertions)。如:java

-ea

-classpath

.

Assertion18htt

唐大仕Java程序設(shè)計程序的測試及JUnit程序的修改是經(jīng)常要進行的過程,必須保證程序在修改后其結(jié)果仍然是正確的。在編寫程序代碼的同時,還編寫測試代碼來判斷這些程序是否正確。這個過程稱為“測試驅(qū)動”的開發(fā)過程。從而保證了代碼的質(zhì)量,減少了后期的查錯與調(diào)試的時間,所以實際上它提高了程序的開發(fā)效率。19htt

唐大仕Java程序設(shè)計JUnit在Java的測試過程,經(jīng)常使用JUnit框架參見

。現(xiàn)在大多數(shù)Jav

a集成開發(fā)工具都提供了對JUnit的支持。在Eclipse中項目右鍵—New—Junit

Test

Case項目右鍵—Run

as—Junit

Test測試通過則為綠色,不通過顯示紅色在NetBeans中項目右鍵—新建—Junit

測試運

試,或者直接按Alt+F6即可20htt

唐大仕Java程序設(shè)計測試函數(shù)@Test來標(biāo)注測試函數(shù)在測試中常用的語句如下:fail(

信息

);

//表示程序出錯assertEqauls(參數(shù)1,參數(shù)2);//表示程序要保證兩個參數(shù)要相等assertNull(參數(shù));//表示參數(shù)要為null@Testpublic

void

testSum2()

{oWorld

a

=

new

oWorld();assertEquals(a.sum(0,

100),

100);//

fail("Not

yet

implemented");}21htt

唐大仕Java程序設(shè)計程序的調(diào)試??????????????????????????????????????22htt

唐大仕Java程序設(shè)計程序中的錯誤程序中的錯誤通??梢苑殖扇箢愓Z法錯誤(Syntax

error)編輯、編譯器發(fā)現(xiàn)運行錯誤(Runtime

error)異常處理機制邏輯錯誤(Logic

error)調(diào)試(debug)、單元測試(unit

test)23htt

唐大仕Java程序設(shè)計程序調(diào)試程序的調(diào)試(debug)在IDE中,項目上點右鍵,debug

as…進入到調(diào)試視圖(debug

)24htt

唐大仕Java程序設(shè)計調(diào)試

段調(diào)試的三種斷點(breakpoint)(trace)監(jiān)視(watch)25htt

唐大仕Java程序設(shè)計斷點切換斷點(toggle

breakpoint

)用鼠標(biāo)單擊(或右擊)編輯器左邊條或者EclipseNetBeansCtrl+Shift+

溫馨提示

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

評論

0/150

提交評論