資源描述:
《java---異常類匿名類實(shí)驗(yàn)報(bào)告》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實(shí)驗(yàn)十四異常類、匿名類課程名稱:面向?qū)ο蟪绦蛟O(shè)計(jì)實(shí)驗(yàn)項(xiàng)目名稱:實(shí)驗(yàn)十四異常類、匿名類【實(shí)驗(yàn)?zāi)康摹?.掌握J(rèn)ava異常類、嵌套類、匿名類?!緦?shí)驗(yàn)內(nèi)容】一、異常類實(shí)驗(yàn)1.編譯下面的程序,并回答問題。classExceptionTest1{publicstaticvoidmain(String[]args){inta=0,b=0;try{a=Integer.parseInt(args[0]);//語句1b=10;//語句2}catch(NumberFormatExceptione){a=1;}System.out.
2、println(a);System.out.println(b);}}(1)執(zhí)行上述ExceptionTest1類(在命令提示符下敲入javaExceptionTest199)運(yùn)行結(jié)果:(2)執(zhí)行上述ExceptionTest1類(在命令提示符下敲入javaExceptionTest1a)運(yùn)行結(jié)果:(3)比較上面兩次運(yùn)行的結(jié)果,說明原因。(思考:執(zhí)行語句1時(shí)發(fā)生異常,語句2執(zhí)行沒有?)執(zhí)行語句1時(shí)沒有發(fā)生異常,語句2執(zhí)行發(fā)生異常。因?yàn)樵谠创a中寫有try{a=Integer.parseInt(args[0])
3、;//語句1b=10;//語句2}catch(NumberFormatExceptione){a=1;}當(dāng)在運(yùn)行代碼時(shí),若在文件名后面輸入的是整數(shù),則不會(huì)發(fā)生異常,try代碼塊的下面的代碼繼續(xù)執(zhí)行,而當(dāng)輸入的是字符或是字符串時(shí),try代碼塊會(huì)捕獲錯(cuò)誤的信息,但是并沒有運(yùn)行下面的代碼,如果try代碼塊中添加了finally部分,將原來的System.out.println(a);System.out.println(b);填入到finally中,則無論有沒有發(fā)生異常,都能執(zhí)行到finally中的代碼。2.編譯下
4、面的程序,并回答問題。classExceptionTest2{publicstaticvoidmain(String[]args){inta=0;try{a=Integer.parseInt(args[0]);}}}(1)編譯上述程序,是否出錯(cuò)?出錯(cuò)(2)如果出錯(cuò),給出出錯(cuò)信息(即javac編譯該文件出錯(cuò)信息):分析為何出錯(cuò)?出錯(cuò)原因:try和catch或finally是成對(duì)出現(xiàn)的,不能出現(xiàn)了try,而后面就沒有了catch或者finally(3)如果將程序改寫為:classExceptionTest2{pu
5、blicstaticvoidmain(String[]args){inta=0;try{a=Integer.parseInt(args[0]);}catch(NumberFormatExceptione){a=1;}}}上述程序是否編譯出錯(cuò)?為什么?上述程序中try與catch是成對(duì)出現(xiàn)的,所以編譯不會(huì)出錯(cuò)。(4)如果將程序改寫為:classExceptionTest2{publicstaticvoidmain(String[]args){inta=0;try{a=Integer.parseInt(args[
6、0]);}finally{a=1;}}上述程序是否編譯出錯(cuò)?不出錯(cuò)為什么?當(dāng)出現(xiàn)了try時(shí),后面要么接catch,要么接finally,但是不能這兩個(gè)都不接。(4)如果將程序改寫為:classExceptionTest2{publicstaticvoidmain(String[]args){inta=0;try{a=Integer.parseInt(args[0]);}catch(Exceptione){a=1;}catch(NumberFormatExceptione){a=2;}}}上述程序是否編譯出錯(cuò)?
7、分析為何出錯(cuò),如何修改程序使之正確?處理子類異常的catch代碼塊要寫在前面,超類寫在后面。classExceptionTest2{publicstaticvoidmain(String[]args){inta=0;try{a=Integer.parseInt(args[0]);}catch(NumberFormatExceptione){a=2;}catch(Exceptione){a=1;}}}3、編譯下面的程序,并回答問題。classExceptionTest3{publicstaticvoidmain
8、(String[]args){check(-1);}staticvoidcheck(inti){if(i<0)thrownewException();}}(1)上述程序編譯是否出錯(cuò)?出錯(cuò)分析錯(cuò)誤原因:(2)將上述程序修改為:classExceptionTest3{publicstaticvoidmain(String[]args){check(-1);}staticvoidcheck(inti)th