第七章異常捕獲及處理-1基本概念_第1頁
第七章異常捕獲及處理-1基本概念_第2頁
第七章異常捕獲及處理-1基本概念_第3頁
第七章異常捕獲及處理-1基本概念_第4頁
第七章異常捕獲及處理-1基本概念_第5頁
免費預覽已結束,剩余27頁可下載查看

付費下載

下載本文檔

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

文檔簡介

異常是導致程序中斷運行的一種指令流,如果不對異常進行正確的序的設計中必須要考慮各種異常的發(fā)生,并正確的做好相應的處理對象的設計思想,所有的異常都以類和對象的形式存在,除了。為什么需要異常處Ja處理拋出異常同時又不會降低程序運行速度等優(yōu)點。因而在jva程序設計時,應j認識異常publicclassTestpublicstaticvoidmain(Stringargsinti=10;intintSystem.out.println("兩個數(shù)字相除結果System.out.println("****計算結束}}程序運行結果****計算開始Exceptioninthread"main"java.lang.ArithmeticException:/byatcom.yl.Test.main(Test.java:8)如果不對異常進行處理,則一旦出現(xiàn)了異常后,程序就立刻退出,所以后面的兩關于被除數(shù)不能為0的說在計算機的發(fā)展中有兩大計算機,一個是斷電,另外一個是被除數(shù)為因為在數(shù)學上的解是無窮大,對于計算機來說,如果是無窮大,則意味著內(nèi)存將全部占滿。在程序中使用異常處//有可能出現(xiàn)異常的語}catch(異常類異常對象//編寫異常的處理語}[catch(異常類異常對象//編寫異常的處理語}catch(異常類異常對象//編寫異常的處理語}….一定會運行到的程序代碼;。如果在try中產(chǎn)生了異常,則程序會自動跳轉(zhuǎn)到catchpublicclassTestpublicstaticvoidmain(String[args)inti=10;inttryintSystem.out.println("兩個數(shù)字相除結果 }catch(Exceptione)System.out.println("出現(xiàn)了異常}System.out.println("****計算結束}}程序運行結果****計算開始****計算結束從以上程序運行結果可以清楚的發(fā)現(xiàn),因為程序加入了異常處理代碼,所以異常發(fā)生后,整個程序也并不會因為異常產(chǎn)生而中斷執(zhí)驗證finally關鍵publicclassTestpublicstaticvoidmain(String[]argsinti=10;inttryint }catch(Exceptione)System.out.println("出現(xiàn)了異常System.out.println("不管程序是否出現(xiàn)異常,這段代碼都會執(zhí)行}System.out.println("****計算結束}}程序運行結果****計算開始不管程序是否出現(xiàn)異常,這段代碼都會執(zhí)****計算結束使用初始化參數(shù)輸入兩個數(shù)字,并進行除法操作publicclassTestpublicstaticvoidmain(String[args)inti=0;intj=0;try{Stringstr1=args[0];Stringstr2=args[1];inttemp=i/j;System.out.println("兩個數(shù)字相除結果 }catch(Exceptione)System.out.println("出現(xiàn)了異常}System.out.println("****計算結束}}程序運行結果兩個數(shù)相除結果出現(xiàn)了異常:java.lang.ArrayIndexOutOfBoundsException****計算開始出現(xiàn)了異常:java.lang.NumberFormatExceptionForinputpublicclassTestpublicstaticvoidmain(String[]argsinti=0;inttryStringstr1=args[0];Stringstr2=i=j=inttemp= }catch(ArithmeticExceptione)System.out.println("算術異常}catch(NumberFormatExceptione)System.out.println("數(shù)字轉(zhuǎn)換異常}catch(ArrayIndexOutOfBoundsExceptione)System.out.println("數(shù)組越界異常}System.out.println("****計算結束}}Java的異常處理格式也在不斷改在正常的異常處理中,異常處理的語句格式有try…catch和try…catch…finally種以上是最標準的做法,但是隨著java的發(fā)展,對于異常的處理語句也可以采用catch-finally的形式編寫可以不寫catch語法,但是這樣的操作沒有多大意義,有的可以自行研究異常類的繼承結在整個jxctn、rrr,這兩個類全都是T的子類Exception:一般表示的是程序中出現(xiàn)的問題,可以直接使用try…catch處理Error:一般指的是JVM錯誤,程序中無法處理Java的異常處理機在整個java的異常處理中,實際上也是按照面象的方式進行處理,處理的驟如下一旦產(chǎn)生異常,則首先會產(chǎn)生一個異常類的實例化對象在try語句中對此異常對象進行捕捉產(chǎn)生的異常對象與cch語句中的各個異常類型進行匹配,如果匹配成功,則執(zhí)行cch語句中的代碼。型接收,那么就可以利用向上的概念,讓所有的異常對象都使用xcti使用Exception處理其他異常publicclassTestpublicstaticvoidmain(String[]argsinti=0;inttryStringstr1=Stringstr2=i=j=inttemp= }catch(ArithmeticExceptione)System.out.println("算術異常}catch(NumberFormatExceptione)System.out.println("數(shù)字轉(zhuǎn)換異常}catch(ArrayIndexOutOfBoundsExceptione)System.out.println("數(shù)組越界異常}catch(Exceptione)System.out.println("其他異常}System.out.println("****計算結束}publicclassTestpublicstaticvoidmain(String[]argsinti=0;intj=0;try{Stringstr1=Stringstr2=i=j=inttemp=System.out.println("兩個數(shù)字相除結果 }catch(Exceptione)System.out.println("算術異常}catch(NumberFormatExceptione)System.out.println("數(shù)字轉(zhuǎn)換異常}System.out.println("****計算結束}}UnreachablecatchblockforNumberFormatException.Itisalreadyhandledbytheblockfor /ylline Java用ExceptionpublicclassTestpublicstaticvoidmain(Stringargsinti=0;intj=0;try{Stringstr1=Stringstr2=i=j=inttemp=System.out.println("兩個數(shù)字相除 }catch(Exceptione)System.out.println("其他異}System.out.println("****計算結束}}提問:可不可以直接使用分別進行捕獲,而不要直接使用Exceptionthrows與throw關鍵throws關鍵public(參數(shù)列表throws異常類classpublicintdiv(inti,intj)throwsException{inttemp=i/j;return}}publicclassTestpublicstaticvoidmain(String[]args)Mathmath=newMath();try{math.div(10,}catch(Exceptione)//TODOAuto-generatedcatch}}}1在以上代碼中,不管是否有問題,都要使用try…catch塊進行異常的捕獲與處理。classpublicintdiv(inti,intj)throwsinttemp=i/j;returntemp;}}publicclassTestpublicstaticvoidmain(String[]args)throwsExceptionMathmath=newmath.div(10,}}注意:不要再主方法中使用throwsthrow關鍵與throws不同的是,可以直接使用throw拋出一個異常。拋出的時候直接拋publicclassTestpublicstaticvoidmain(String[]args)throwsExceptiontrythrownewException("自己拋出的異常}catch(Exceptione)}}}程序運行結果java.lang.Exception:自己拋出的異以上代碼并不難理解,因為異常產(chǎn)生時肯定會有系統(tǒng)產(chǎn)生一個異常類的實例象,只是此時異常類的實例化對象是手工產(chǎn)生的注意:throw不會單獨使throws與throw的應的要求就必須把所有的都是用上。classpublicintdiv(inti,intj)throwsSystem.out.println("****計算開始inttemp=trytemp=}catch(Exceptione)throwSystem.out.println("****計算結束}return}}publicclassTestpublicstaticvoidmain(String[]args)Mathmath=newtrySystem.out.println("除法操作:"+math.div(10,}catch(Exceptione)//TODOAuto-generatedcatchSystem.out.println("異常產(chǎn)生}}}****計算結束異常產(chǎn)生:java.lang.ArithmeticExceptionbyException和在java面試中經(jīng)常會被問道Exception和RuntimeException類的區(qū)別,如果理解這兩個類的區(qū)別,請看一下這段代碼字符串變?yōu)檎麛?shù)publicclassTestpublicstaticvoidmain(String[]args)Stringinttemp=}}Iter因為是開頭首字母大寫,所以肯定是一個類,而st()方法可以直接有類名稱調(diào)用,所以此方法肯定是一個靜態(tài)方法,此方法定義如下:publicstaticintparseInt(Strings)throws以上方法在時使用了thros關鍵字,但是在方法調(diào)用時并沒有使用tr…cchmbeFotction類的繼承結構:自定義異自定義異常類classMyExce

溫馨提示

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

評論

0/150

提交評論