scjp培訓第七章java異常_第1頁
scjp培訓第七章java異常_第2頁
scjp培訓第七章java異常_第3頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第七章異常本揆塊講述建立在Java編程語言中的錯誤處理裟置。Th巳ava Proqrannmnq Lanquage Basics仙翕呼屈dKay weed 名窗 a Typ»nwContwdct-Onented Programming8* 伏d 6a ”4鄉(xiāng)心、沁Bm驢冷:f沁xExoaption HandlingDeveloping Graphical U曲* Interfac&sTTlZAWT EwtrHCddCccnpcciri WxacyrcoidiiZ<iApp 陰 ts hWSMultithreadingTh(4«5Communicationsg

2、環(huán) IAD第一節(jié)相關(guān)問題討論一下述問題與本揆塊中的材料相關(guān):- 衣大部分編程語言中,如何解決運疔時錯誤第二節(jié)目的本揆塊學習結(jié)束后,能夠:- 定義異常一使用 try, catch 和 f inaI Iy 語句- 描述異常分類- 開發(fā)程序來處理自己的異常第三節(jié)異常異 常異常吳定義程序所遇到的輕微錯誤發(fā)生下列惜況時,會出現(xiàn)異常:想打開的文件不存在網(wǎng)絡(luò)連接中斷受控操作數(shù)趨出預(yù)定范國非常感興趣地正在裟載的類文件去失錯誤類定義嚴重的錯誤條件介紹什么是異常在Java 語言中,異常類定義程序中可能遇到的輕微的錯誤條件??梢詫懘a來處理異常并繼續(xù)程 序執(zhí)行,而不杲讓程序中斷。在程序執(zhí)疔中.任何中斷正常程序流程的

3、異常條件軌是錯誤或異常。例如,發(fā)生下列悄況時.會出現(xiàn)并常:- 想打開的文件不存在- 網(wǎng)絡(luò)連接中斷- 受控操作數(shù)超出預(yù)定范國- 非常感興趣地正在裝載的類文件丟失在Java編程語言中,錯誤類定義禎認為是不能恢復(fù)的嚴重錯誤條件。在大多數(shù)悄況下,當遇到這樣的錯誤時,建 議讓程序中斷。Java編程語言實現(xiàn)C卄異常來幫助建立彈性代碼。在程序中發(fā)生錯誤時,發(fā)現(xiàn)錯誤的方法能挺出一個異常到其調(diào)用 程序,發(fā)出已經(jīng)發(fā)生問題的信號。然后,調(diào)用方法捕菽拋出的異常.在可能時,再恢復(fù)回來。這個方案給程序員一個寫 處理程序的選擇,來處理異常。通過瀏寬API,可以決定方法鞄出的是什么樣的異常。實例考慮一下程序版本的簡單擴展,它

4、通過信息來循環(huán):1. public class He IloWorId 2. pub Iic static void main (Str ing args) 3int i =0;4.5. Str ing greet ings = 6. "HeI Iowor Id! ",7. MNo, Imean it!",8. “HELLOWORLD!*9. 1;10.10. while (i < 4) 11. (greetingsi);12. i+;13. 114. I15. )正常悄況下,當異常祓宛出時,在其術(shù)環(huán)被執(zhí)行四次之后,程序終止,并帶有錯誤信息,就象前而所示的程

5、序那樣。1. c: student> java He I loV/or Id2. Helloworld!3. No, Imean it!4. HELLOWORLD!5. 36.at :12)異常處理允許程序捕獲異常,處理它們,然土繼續(xù)程序執(zhí)行。它是分層把關(guān).因此,錯誤悄況不會介入到程序的正常流 程中。特殊悄況發(fā)生時,在與正常執(zhí)行的代碼分離的代碼塊中被處理。這就產(chǎn)生了史易識別和管理的代碼。第四節(jié)異常處理Java編程語言提供了 一個來考慮哪個異常被拋出以及如何來恢復(fù)它的機制。try和catch語句try和catch語句1.try try 2. catch (MyExcept ionType

6、e) 4. catch (Exception e) 6. 調(diào)用棧機制如果方法中的一個語句施出一個沒有在相應(yīng)的try/catch塊中處理的異常,那么這個異常就被施出到調(diào)用方法中。 如果異常也沒有在調(diào)用方法中禎處理,它続秋拋出到該方法的調(diào)用程序。這個過程要一直延續(xù)到異常被處理。如果異常 到這時還沒被處理.它便回到mainO,而且.即使main()不處理它,那么,該異常就異常地中斷程序??紤]這樣一種悄況,在該恃況中mainO方法調(diào)用另一個方法(比如,f irst (),然后它調(diào)用另一個(比如,second () 如果在secondO中發(fā)生異常.那么必須做一個檢查來看看該異常是否有一個catch:如果

7、沒有,那么対調(diào)用棧(first () 中的下一個方法進行檢查,然后檢查下一個(mainO)。如果這個異常在該調(diào)用棧上沒有被最后一個方法處理,那么就 會發(fā)生一個運疔時錯誤,程序終止執(zhí)行。f inal I y 語句final ly 語句1try 2.startFaucet ();3.waterLawnO ;4.)5.final 1y 6.stopFaucet 0;7.)finally語句定艾一個總是執(zhí)行的代碼塊,而不考慮異常是否禎捕獲。下述樣板代碼來自Frank Yell in弗蘭克葉林 的白皮書Java中的低級安全:1. try 2startFauce t();3waterLaw n();4.

8、5. finally 6 stopFaucet ();7.在前面的例子中,即使異常在打開開關(guān)或給草地澆水時發(fā)生,開關(guān)也能被關(guān)棹° try E而的括號中的代碼秋稱做保護碼。如果終止程序的()方法在保護碼內(nèi)被執(zhí)疔那么,這是finally語句不祓執(zhí)行的唯一悄況。這兢暗示,控制流程能 偏離正常執(zhí)行順序,比如,如呆一個return語句被嵌入try塊內(nèi)的代碼中,那么,finally塊中的代碼應(yīng)在return前 執(zhí)行。重訪前例下面的例子是第169頁mainO方法的重寫。本程序以前的版本中產(chǎn)生的異常袱捕荻,數(shù)組索引重新設(shè)定,使下述程 序繼續(xù)運行。1 public static void main (

9、String args) ..6.17.int i = 0;String greetings = "Hello world!"."No, I mean it!",MHELLO WORLD!"while (i < 4) try (greetingsij); catch (ArrayIndexOutOfBoundsException e) 'Re-setting Index Value");)finally "This i s always pr i

10、nted");Out Oflfemor rrorThrowahle fiQJTError Ar i thjoe ticExc ep ti onIOExceptionRjxitimeE?sc ep tionNullP ointe lExcepti oIndexOu. tdf BoundsException EOFExceptioni+; Fi LeNotF oundExc ep tionpub I ic void connectMe (Str i ng serverName) throv/sServerTimedOutExcept ion 2int success;3. int por

11、tToConnect = 80;4. success = open(serverName, portToConnect):5if (success = -1) 6. thrownew ServerTimedOutException(7. 'Could not connect",80);8. 9. )要捕荻異常,使用try語句:1 public void findServer 0 2. 3. try 4. connectMe(defauItServer);5)catch(ServerT imedOutExcept ion e) 6. “Server timed out, try

12、ing alternate");7. try 8. connectMe(aIternateServer);9. catch (ServerT imedOutExcept i on e1) 10 No server currently avaiI able");11. )12. 13. 注一try和catch塊可以如前例所述那樣被嵌套。也可能部分地處理一個異常然E也將它拽出。如:try catch (ServerT imedOutExcept ion e) "Error caught “);throw e;練習:處理并創(chuàng)建異常練習目的一通過編寫可以創(chuàng)建并處理異常的Java軟件程序,可以獲得異常機制的經(jīng)臉。一. 準備為了成功地完成該實驗,必須理解處理運行時錯誤的異常的概念。二. 任務(wù)一級實驗:處理一個異常1. 使用第169頁上的樣板異常程序在數(shù)組索引超出數(shù)組大小時創(chuàng)建一個異常。(或修改囪己的程序以使創(chuàng)建一個 異常。)2. 使用try和catch語句從異常進行恢復(fù)。二級實驗:創(chuàng)建自己的異常使用楔塊5中創(chuàng)建的bank包并附加下述異常:AccountOverdrawnExcept ion當有了這個要取出比帳戶上史多的錢的嘗試.時。Inva

溫馨提示

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

評論

0/150

提交評論