scjp培訓第七章java異常_第1頁
scjp培訓第七章java異常_第2頁
scjp培訓第七章java異常_第3頁
scjp培訓第七章java異常_第4頁
scjp培訓第七章java異常_第5頁
免費預覽已結(jié)束,剩余2頁可下載查看

付費下載

下載本文檔

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

文檔簡介

scjp培訓第七章java異常scjp培訓第七章java異常scjp培訓第七章java異常資料僅供參考文件編號:2022年4月scjp培訓第七章java異常版本號:A修改號:1頁次:1.0審核:批準:發(fā)布日期:第七章異常本模塊講述建立在Java編程語言中的錯誤處理裝置。第一節(jié)相關(guān)問題討論—下述問題與本模塊中的材料相關(guān):在大部分編程語言中,如何解決運行時錯誤第二節(jié)目的本模塊學習結(jié)束后,能夠:定義異常使用try,catch和finally語句描述異常分類開發(fā)程序來處理自己的異常第三節(jié)異常異常異常類定義程序所遇到的輕微錯誤發(fā)生下列情況時,會出現(xiàn)異常:想打開的文件不存在網(wǎng)絡連接中斷受控操作數(shù)超出預定范圍非常感興趣地正在裝載的類文件丟失錯誤類定義嚴重的錯誤條件介紹什么是異常在Java編程語言中,異常類定義程序中可能遇到的輕微的錯誤條件??梢詫懘a來處理異常并繼續(xù)程序執(zhí)行,而不是讓程序中斷。在程序執(zhí)行中,任何中斷正常程序流程的異常條件就是錯誤或異常。例如,發(fā)生下列情況時,會出現(xiàn)異常:想打開的文件不存在網(wǎng)絡連接中斷受控操作數(shù)超出預定范圍非常感興趣地正在裝載的類文件丟失在Java編程語言中,錯誤類定義被認為是不能恢復的嚴重錯誤條件。在大多數(shù)情況下,當遇到這樣的錯誤時,建議讓程序中斷。Java編程語言實現(xiàn)C++異常來幫助建立彈性代碼。在程序中發(fā)生錯誤時,發(fā)現(xiàn)錯誤的方法能拋出一個異常到其調(diào)用程序,發(fā)出已經(jīng)發(fā)生問題的信號。然后,調(diào)用方法捕獲拋出的異常,在可能時,再恢復回來。這個方案給程序員一個寫處理程序的選擇,來處理異常。通過瀏覽API,可以決定方法拋出的是什么樣的異常。實例考慮一下程序版本的簡單擴展,它通過信息來循環(huán):publicclassHelloWorld{publicstaticvoidmain(Stringargs[]){inti=0;Stringgreetings[]={"Helloworld!","No,Imeanit!","HELLOWORLD!!"};while(i<4){(greetings[i]);i++;}}}正常情況下,當異常被拋出時,在其循環(huán)被執(zhí)行四次之后,程序終止,并帶有錯誤信息,就象前面所示的程序那樣。c:\student\>javaHelloWorldHelloworld!No,Imeanit!HELLOWORLD!!3at:12)異常處理允許程序捕獲異常,處理它們,然后繼續(xù)程序執(zhí)行。它是分層把關(guān),因此,錯誤情況不會介入到程序的正常流程中。特殊情況發(fā)生時,在與正常執(zhí)行的代碼分離的代碼塊中被處理。這就產(chǎn)生了更易識別和管理的代碼。第四節(jié)異常處理Java編程語言提供了一個來考慮哪個異常被拋出以及如何來恢復它的機制。try和catch語句try和catch語句try{try{2.}catch(MyExceptionTypee){4.}catch(Exceptione){6.}調(diào)用棧機制如果方法中的一個語句拋出一個沒有在相應的try/catch塊中處理的異常,那么這個異常就被拋出到調(diào)用方法中。如果異常也沒有在調(diào)用方法中被處理,它就被拋出到該方法的調(diào)用程序。這個過程要一直延續(xù)到異常被處理。如果異常到這時還沒被處理,它便回到main(),而且,即使main()不處理它,那么,該異常就異常地中斷程序。考慮這樣一種情況,在該情況中main()方法調(diào)用另一個方法(比如,first()),然后它調(diào)用另一個(比如,second())。如果在second()中發(fā)生異常,那么必須做一個檢查來看看該異常是否有一個catch;如果沒有,那么對調(diào)用棧(first())中的下一個方法進行檢查,然后檢查下一個(main())。如果這個異常在該調(diào)用棧上沒有被最后一個方法處理,那么就會發(fā)生一個運行時錯誤,程序終止執(zhí)行。finally語句finally語句try{startFaucet();waterLawn();}finally{stopFaucet();}finally語句定義一個總是執(zhí)行的代碼塊,而不考慮異常是否被捕獲。下述樣板代碼來自FrankYellin弗蘭克葉林的白皮書《Java中的低級安全》:try{startFaucet();waterLawn();}finally{stopFaucet();}在前面的例子中,即使異常在打開開關(guān)或給草地澆水時發(fā)生,開關(guān)也能被關(guān)掉。try后面的括號中的代碼被稱做保護碼。如果終止程序的()方法在保護碼內(nèi)被執(zhí)行,那么,這是finally語句不被執(zhí)行的唯一情況。這就暗示,控制流程能偏離正常執(zhí)行順序,比如,如果一個return語句被嵌入try塊內(nèi)的代碼中,那么,finally塊中的代碼應在return前執(zhí)行。重訪前例下面的例子是第169頁main()方法的重寫。本程序以前的版本中產(chǎn)生的異常被捕獲,數(shù)組索引重新設定,使下述程序繼續(xù)運行。publicstaticvoidmain(Stringargs[]){inti=0;Stringgreetings[]={"Helloworld!","No,Imeanit!","HELLOWORLD!!"};while(i<4){try{(greetings[i]);}catch(ArrayIndexOutOfBoundsExceptione){"Re-settingIndexValue");i=-1;}finally{"Thisisalwaysprinted");}i++;}publicvoidconnectMe(StringserverName)throwsServerTimedOutException{intsuccess;intportToConnect=80;success=open(serverName,portToConnect);if(success==-1){thrownewServerTimedOutException("Couldnotconnect",80);}}要捕獲異常,使用try語句:publicvoidfindServer(){...try{connectMe(defaultServer);}catch(ServerTimedOutExceptione){"Servertimedout,tryingalternate");try{connectMe(alternateServer);}catch(ServerTimedOutExceptione1){"Noservercurrentlyavailable");}}...注—try和catch塊可以如前例所述那樣被嵌套。也可能部分地處理一個異常然后也將它拋出。如:try{..........}catch(ServerTimedOutExceptione){"Errorcaught");throwe;}練習:處理并創(chuàng)建異常練習目的—通過編寫可以創(chuàng)建并處理異常的Java軟件程序,可以獲得異常機制的經(jīng)驗。一、準備為了成功地完成該實驗,必須理解處理運行時錯誤的異常的概念。二、任務一級實驗:處理一個異常1.使用第169頁上的樣板異常程序在數(shù)組索引超出數(shù)組大小時創(chuàng)建一個異常。(或修改自己的程序以便創(chuàng)建一個異常。)2.使用try和catch語句從異常進行恢復。二級實驗:創(chuàng)建自己的異常使用模塊5中創(chuàng)建的bank包并附加下述異常:AccountOverdrawnException—當有了這個要取出比帳戶上更多的錢的嘗試時。Invalid

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論