版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 桌面游戲比賽場記協(xié)議
- 保障權(quán)益杭州二手房合同解讀
- 工程承包合作合同條件
- 電力施工給排水維修安全協(xié)議
- 工業(yè)液體存儲罐租賃協(xié)議
- 木材加工辦公室租賃合同
- 機械設(shè)備付款承諾書模板
- 旅游景區(qū)草坪維護合同
- 農(nóng)村采摘園租賃合同
- 漁業(yè)捕撈大車租賃合同
- 中國 美國 日本水洗標(biāo)志對比
- 新產(chǎn)品試制流程管理辦法
- 通用橫版企業(yè)報價單模板
- 潛油泵及潛油泵加油機講義
- 物業(yè)服務(wù)公司各崗位規(guī)范用語
- 醫(yī)患溝通內(nèi)容要求記錄模板(入院、入院三日、術(shù)前、術(shù)后、出院)
- 航海學(xué)天文定位第四篇第6章天文定位
- 淺談深度教學(xué)中小學(xué)數(shù)學(xué)U型學(xué)習(xí)模式
- 物理電學(xué)暗箱專題30道
- 裝修公司員工勞動合同
- 江西上饒鉛山汽車駕駛科目三考試線路
評論
0/150
提交評論