Java程序設計項目式教程 課件 5-2 利用異常處理解決程序運行異常_第1頁
Java程序設計項目式教程 課件 5-2 利用異常處理解決程序運行異常_第2頁
Java程序設計項目式教程 課件 5-2 利用異常處理解決程序運行異常_第3頁
Java程序設計項目式教程 課件 5-2 利用異常處理解決程序運行異常_第4頁
Java程序設計項目式教程 課件 5-2 利用異常處理解決程序運行異常_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

§5-2異常處理Java語言程序設計教學目標任務分析前面我們在錄入學生信息時發(fā)現,用戶如果不能錄入正常信息會導致程序崩潰,我們無法保證用戶每次都能按正確格式錄入,但我們可以通過對用戶可能會出現的問題提前進行處理,以保證程序不崩潰。教學內容1聲明異常捕獲異常2throw拋出異常3一、捕獲異常捕獲異常的try-catch-finally語句的其語法格式為:try{//可能會引發(fā)異常的代碼}catch(ExceptionType1e){//對ExceptionType1的處理}catch(ExceptionType2e){//對ExceptionType2的處理}......finally{//該結構并非必須,但如果有,則否發(fā)生了異常,finally語句都會執(zhí)行......//}捕獲異常的第一步是用try{…}選定捕獲異常的范圍,由try所限定的代碼塊中的語句在執(zhí)行過程中可能會生成異常對象并拋棄。一、捕獲異常1.try每個try代碼塊可以伴隨一個或多個catch語句,用于處理try代碼塊中所生成的異常事件。catch語句只需要一個形式參數來指明它所能夠捕獲的異常類型,這個類必須是Throwable的子類,運行時系統(tǒng)通過參數值把被拋棄的異常對象傳遞給catch塊。①如果try中代碼沒有出現異常,則不會進入catch塊。②如果出現異常對象,則會依次與catch塊中的異常類型進行驗證,是否是屬于該類型的異常,如果是,則進入該catch塊,后續(xù)catch塊不再繼續(xù)驗證,即不會再執(zhí)行后續(xù)catch塊。如何出現的異常對象不屬于所有catch塊中的異常,則無法捕獲該異常,該異常依然會導致程序崩潰,所以為防止此種情況可以在最后的catch塊設置捕獲的異常類型為Exception類型。一、捕獲異常2.catch捕獲異常的最后一步是通過finally語句為異常處理提供一個統(tǒng)一的出口,使得在控制流轉到程序的其它部分以前,能夠對程序的狀態(tài)做統(tǒng)一的管理。一般是用來關閉文件或釋放其他的系統(tǒng)資源。雖然finally作為try-catch-finally結構的一部分,但在程序中是可選的,也就是說可以沒有finally語句。如果存在finally語句,不論try塊中是否發(fā)生了異常,是否執(zhí)行過catch語句,都要執(zhí)行finally語句。一、捕獲異常3.finally示例代碼當數組下標超界時,捕獲異常publicstaticvoidmain(Stringargs[]){ Stringstr[]={"北京","山東","上海"}; inti=0; while(i<4){ try{ System.out.println(str[i]); }catch(ArrayIndexOutOfBoundsExceptione){ System.out.println("數組下標越界"); }finally{ System.out.println("這行信息總是會打印,無論是否出現異常"); } i++; }}二、聲明異常

當Java程序運行時系統(tǒng)得到一個異常對象時,如果一個方法并不知道如何處理所出現的異常,則可在方法聲明時,聲明拋棄(throws)異常。如果方法中有可能拋出多個異常,異常列表中要一一列出,各異常之間用逗號隔開。語法如下:修飾符返回類型方法名(參數列表)throws異常列表{方法體;}如:publicvoidmyMethod()throwsIOException{……}說明:通過使用throws聲明異常的方法,該方法自己不處理本方法中產生的異常,而是由調用它的方法來處理這些異常。三、throw拋出異常

除程序編譯或運行階段系統(tǒng)自動拋出異常外,用戶還可以根據實際需求手動通過throw關鍵字拋出異常。其一般格式為:thrownewXxxException();或

XxxException()ex=newXxxException();throwex;

如果手動拋出的為非運行時異常,則throw所在方法必須是通過throws關鍵字聲明了異常的方法,或使用try-catch對該非運行時異常進行處理。四、自定義異常

盡管Java提供了相當多的異常類,但Exception提供的系統(tǒng)異常并不一定總能捕獲程序中發(fā)生的所有錯誤。當用戶遇到了系統(tǒng)預定義的異常類不能描述的問題時,還需要創(chuàng)建用戶自定義的異常,比如在銀行系統(tǒng)中存錢的數據如果小于0即為一種異?,F象。

用戶定義的異常必須繼承自Throwable、Exception類或Exception的其他子類。語法:publicclass類名extends異常類名{//類體}

自定義的異常必須由用戶自己拋出throw,格式為:thrownew自定義異常類名()示例代碼自定義存款異常類BalanceException繼承繼承自

ExceptionpublicclassBalanceExceptionextendsException{ publicBalanceException(){} publicBalanceException(Stringmessage){//帶參構造方法,指定異常消息 super(message); }

}示例代碼//定義銀行類Bank,該類具有存款方法publicclassBank{ //存款方法,判斷存款金額如果為負數,則聲明拋出BalanceException publicstaticvoiddeposit(intbalance)throwsBalanceException{ if(balance<0){ //創(chuàng)建自定義異常對象 BalanceExceptionbalanceException=newBalanceException("存款不能為負數"); //拋出異常

throwbalanceException; }else{ System.out.println("存款成功"); } }示例代碼

//在main方法調用存款方法 publicstaticvoidmain(String[]args){ intbalance; Scannersc=newScanner(System.in); System.out.println("請輸入存款金額:"); balance=sc.nextInt(); //使用try-catch處理BalanceException try{ deposit(balance); }catch(Exceptione){ e.printStackTrace(); } }}

測試輸入金額為正數和負數shi任務實施使用try-catch-finally解決因用戶不合理理錄入錯誤而引起的程序崩潰,從而提高程序運行的可靠性,實現步驟如下。1)將可能出現異常的代碼(即輸入學生年齡部分)放入try代碼塊。2)使用catch代碼塊捕獲Exception。程序開發(fā)階段可以在catch塊中將異常信息通過

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論