版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 一年級數(shù)學(xué)(上)計算題專項練習(xí)匯編
- 規(guī)范校外培訓(xùn)合同(2篇)
- 小丑電影課件教學(xué)課件
- 老師課件制作教學(xué)
- 南京工業(yè)大學(xué)浦江學(xué)院《土力學(xué)與地基基礎(chǔ)》2023-2024學(xué)年第一學(xué)期期末試卷
- 南京航空航天大學(xué)《法律文書》2022-2023學(xué)年期末試卷
- soc芯片課件教學(xué)課件
- 石林縣風(fēng)貌改造施工組織設(shè)計書(二標(biāo)段)
- 南京工業(yè)大學(xué)浦江學(xué)院《企業(yè)家精神創(chuàng)新精神與商業(yè)規(guī)劃》2022-2023學(xué)年第一學(xué)期期末試卷
- 《詠柳》的說課稿
- 托管安全責(zé)任承諾書范文(19篇)
- -常規(guī)化驗單解讀
- BYK-潤濕分散劑介紹
- 家長進(jìn)課堂小學(xué)生建筑知識課件
- 2023年口腔醫(yī)學(xué)期末復(fù)習(xí)-牙周病學(xué)(口腔醫(yī)學(xué))考試歷年真題集錦帶答案
- 函數(shù)的概念 省賽獲獎
- 網(wǎng)絡(luò)安全培訓(xùn)-
- 地下車位轉(zhuǎn)讓協(xié)議
- 2018年蜀都杯《辛亥革命》終稿z
- 斷絕關(guān)系的協(xié)議書兄妹
- 工程變更現(xiàn)場簽證經(jīng)濟(jì)臺帳
評論
0/150
提交評論