java數(shù)據(jù)流,異常處理機(jī)制實驗報告_第1頁
java數(shù)據(jù)流,異常處理機(jī)制實驗報告_第2頁
java數(shù)據(jù)流,異常處理機(jī)制實驗報告_第3頁
java數(shù)據(jù)流,異常處理機(jī)制實驗報告_第4頁
java數(shù)據(jù)流,異常處理機(jī)制實驗報告_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第五次實驗實驗日志指導(dǎo)教師張璞實驗時間:年月日學(xué)院計算機(jī)專業(yè)計算機(jī)科學(xué)與技術(shù)班級0411003 學(xué)號2010211865姓名蔡文佳實驗室S319一.異常處理機(jī)制一、實驗?zāi)康模赫莆债惓5幕靖拍?。理解異常處理機(jī)制。掌握創(chuàng)建自定義異常的方法。二、實驗要求:編寫一個有異常處理的Java應(yīng)用程序。三、實驗內(nèi)容:Java提供了異常處理機(jī)制,當(dāng)程序中發(fā)生異常時,程序產(chǎn)生一個異常事件,相應(yīng)地生成異常對象。系統(tǒng)從生成對象的代碼開始,沿方法的調(diào)用棧逐層回溯,尋找相應(yīng)的處理代碼,并把異常對象交給該方法處理。在記事本編輯如下源程序:publicclassEx7_1{ publicstaticvoidmain(String[]args){ Stringoutput[]={ "The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ System.out.print(output[i++]); } System.out.println("haha..."); } }保存程序Ex7_1.java,編譯運(yùn)行程序,觀察并分析程序的運(yùn)行結(jié)果。Thequickbrownfoxjumpsoverthelazydog.Exceptioninthread"main"java.lang.ArrayIndexOutOfBoundsExceptionatEx7_1.main(Ex7_1.java:9),可以看出,在第9行出現(xiàn)了數(shù)組下標(biāo)越界的異常,導(dǎo)致了程序的中止,而程序的最后一條語句“System.out.println("haha...");”沒有執(zhí)行。我們修改程序,加入異常處理,當(dāng)程序發(fā)生異常時,經(jīng)過異常處理后,程序還可以繼續(xù)執(zhí)行。修改代碼如下:publicclassEx7_2{ publicstaticvoidmain(String[]args){ Stringoutput[]={ "The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ try{ System.out.print(output[i++]); } catch(ArrayIndexOutOfBoundsExceptione) { System.out.println(); System.out.println("下標(biāo)越界異常處理!"); System.out.println(e.toString()); break; } } System.out.println("haha..."); } }重新編譯運(yùn)行程序,對比運(yùn)行結(jié)果。在catch后加入:finally{ System.out.println("不管怎樣都要執(zhí)行的語句!"); }再重新編譯運(yùn)行,對比運(yùn)行結(jié)果。除了下標(biāo)越界的異常外,還有幾個常用的異常,如:ArithmeticException、NullPointerException、NegativeArraySizeException、ArrayIndexOutOfBoundsException等。試編寫一個除數(shù)為0的異常處理過程。除了使用系統(tǒng)定義的異常外,用戶還可以自定義異常。其格式為:publicclassMyExceptionextendsException{…}試自定義一個異常,在計算兩個數(shù)乘積的方法(Multiply)中,如果結(jié)果超過1000則拋出這個異常。方法Multiply定義如下:StaticintMultiply(intn,intm)throwsMyException{ intre; re=n*m; if(re>1000) thrownewMyException(“結(jié)果re=”+re+“超過了”+1000); returnre;}完善這個程序,并測試。程序代碼:publicclassEx7_1{ publicstaticvoidmain(String[]args){ Stringoutput[]={"The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ System.out.print(output[i++]); } System.out.println("haha..."); }}運(yùn)行結(jié)果:程序代碼:publicclassEx7_2{ publicstaticvoidmain(String[]args){ Stringoutput[]={ "The","quick","brown","fox","jumps", "over","the","lazy","dog."}; inti=0; while(i<12){ try{ System.out.print(output[i++]); } catch(ArrayIndexOutOfBoundsExceptione) { System.out.println(); System.out.println("下標(biāo)越界異常處理!"); System.out.println(e.toString()); break; } finally{ System.out.println("不管怎樣都要執(zhí)行的語句!"); } } System.out.println("haha..."); } }運(yùn)行結(jié)果:程序代碼:publicclassMyExceptionextendsException{ privateStringErrorMessage; publicMyException(Stringstring){ super(string); ErrorMessage=string; } publicStringgetMessage(){ returnErrorMessage; } }publicclassEx7_3{ publicstaticvoidmain(String[]args){ inta=0; try{ System.out.println(19/a); }catch(ArithmeticExceptione) { System.out.println(); System.out.println("除數(shù)不能為0!"); System.out.println(e.toString()); } } } 運(yùn)行結(jié)果:二.Java數(shù)據(jù)流一、實驗?zāi)康模赫莆諗?shù)據(jù)流的基本概念。掌握多種讀取/寫入數(shù)據(jù)的方法。二、實驗要求:編寫一個含有讀取/寫入數(shù)據(jù)的Java應(yīng)用程序。三、實驗內(nèi)容:編寫一個計算器,它從鍵盤中讀取操作數(shù)和操作符,經(jīng)過計算后,在屏幕上輸出結(jié)果。在記事本編輯如下源程序:importjava.io.*;classCalculator{ publicstaticvoidmain(String[]args){ Calculatorcal=newCalculator(); cal.Calculate(); } publicdoubleReadDouble(){ //從鍵盤讀取一個Double數(shù) doublere=0; DataInputStreamin=newDataInputStream(System.in); try{ Stringtemp=in.readLine(); re=Double.parseDouble(temp); } catch(IOExceptione){ System.out.println("ErrorinI/O:"+e.getMessage()); } returnre; } publicvoidCalculate(){ //計算 bytecmd='q'; do { doubleop1,op2,re=0; byteop; System.out.print("請輸入操作數(shù)1:"); op1=ReadDouble(); System.out.print("請輸入操作(+、-、*、/):"); op=ReadByte(); System.out.print("請輸入操作數(shù)2:"); op2=ReadDouble(); switch(op) { case'+': re=op1+op2; break; case'-': re=op1-op2; break; case'*': re=op1*op2; break; case'/': re=op1/op2; break; default: System.out.println("操作符錯誤"); continue; } System.out.println(""+op1+(char)op+op2+"="+re); System.out.print("退出?(Q/q)"); cmd=ReadByte(); }while(cmd!='Q'&&cmd!='q'); } publicbyteReadByte(){ //讀操作符 bytecmd[]=newbyte[10]; try{ System.in.read(cmd); } catch(IOExceptione){ System.out.println("ErrorinI/O:"+e.getMessage()); } returncmd[0]; } }保存程序Calculator.java,編譯程序,運(yùn)行并測試程序。試編寫一個程序完成文件拷貝功能,即從文件A中讀取數(shù)據(jù),再寫到文件A的拷貝——文件B中。程序代碼:importjava.io.*;classCalculator{ publicstaticvoidmain(String[]args){ Calculatorcal=newCalculator(); cal.Calculate(); } publicdoubleReadDouble(){ //從鍵盤讀取一個Double數(shù) doublere=0; DataInputStreamin=newDataInputStream(System.in); try{ Stringtemp=in.readLine(); re=Double.parseDouble(temp); } catch(IOExceptione){ System.out.println("ErrorinI/O:"+e.getMessage()); } returnre; } publicvoidCalculate(){ //計算 bytecmd='q'; do { doubleop1,op2,re=0; byteop; System.out.print("請輸入操作數(shù)1:"); op1=ReadDouble(); System.out.print("請輸入操作(+、-、*、/):"); op=ReadByte(); System.out.print("請輸入操作數(shù)2:"); op2=ReadDouble(); switch(op) { case'+': re=op1+op2; break; case'-': re=op1-op2; break; case'*': re=op1*op2; break; case'/': re=op1/op2; break; default: System.out.println("操作符錯誤"); continue; } System.out.println(""+op1+(char)op+op2+"="+re); System.out.print("退出?(Q/q)"); cmd=ReadByte(); }while(cmd!='Q'&&cmd!='q'); } publicbyteReadByte(){ //讀操作符 bytecmd[]=newbyte[10]; try{ System.in.read(cmd); }

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論