資源描述:
《Visual Basic.NET程序設(shè)計(jì)基礎(chǔ) 教學(xué)課件 作者 陳承歡 (第7章)-程序調(diào)試與異常處理.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、第7章程序調(diào)試與異常處理程序的錯(cuò)誤類(lèi)型7.1應(yīng)用程序執(zhí)行的監(jiān)控7.2程序代碼的規(guī)范化與智能感知技術(shù)7.4異常處理7.5調(diào)試工具的使用7.3——【知?識(shí)?技?能?目?標(biāo)】——(1)掌握修改語(yǔ)法錯(cuò)誤、運(yùn)行錯(cuò)誤、邏輯錯(cuò)誤的方法。(2)掌握VisualBasic.NET程序的調(diào)試方法。(3)掌握利用Try…Catch…Finally語(yǔ)句來(lái)實(shí)現(xiàn)結(jié)構(gòu)化異常處理的方法。(4)熟悉程序代碼的規(guī)范化和智能感知技術(shù)。(5)了解應(yīng)用程序執(zhí)行的監(jiān)控方法。7.1程序的錯(cuò)誤類(lèi)型程序開(kāi)發(fā)過(guò)程中,經(jīng)常會(huì)遇到三類(lèi)錯(cuò)誤:語(yǔ)法錯(cuò)誤、運(yùn)行錯(cuò)誤、邏輯錯(cuò)誤。7.1.1語(yǔ)法錯(cuò)誤語(yǔ)法錯(cuò)誤是指發(fā)生在編
2、寫(xiě)程序過(guò)程中,由于語(yǔ)法不符合VisualBasic.NET的語(yǔ)法規(guī)則而引起的錯(cuò)誤。例如,關(guān)鍵字拼錯(cuò);標(biāo)點(diǎn)符號(hào)寫(xiě)錯(cuò)或遺漏;表達(dá)式名稱(chēng)寫(xiě)錯(cuò);變量沒(méi)有聲明;使用For語(yǔ)句,沒(méi)有Next作為結(jié)尾;If與EndIf不匹配;使用內(nèi)部函數(shù)時(shí)漏寫(xiě)了參數(shù)或參數(shù)不正確等?!緦?shí)例7-1】【設(shè)計(jì)任務(wù)】編寫(xiě)程序求5的階乘(即5!)?!驹O(shè)計(jì)過(guò)程】(1)新建一個(gè)控制臺(tái)應(yīng)用程序項(xiàng)目Chapter7_1。(2)編寫(xiě)程序代碼,實(shí)現(xiàn)其功能。程序代碼如代碼7-1所示。代碼7-101020304050607DimiAsIntegerDimProductAsIntegerProduct=1For
3、i=1To5Step1Product*=iNextiConsole.WriteLine((i-1)&"!="&Product)【分析、改正錯(cuò)誤】下面在代碼7-1中有意設(shè)置一些錯(cuò)誤,然后觀察錯(cuò)誤提示及錯(cuò)誤原因。(1)如果刪除代碼7-1中的第06行“Nexti”,編譯時(shí)會(huì)出現(xiàn)如圖7-1所示的錯(cuò)誤提示,【任務(wù)列表】窗口中也會(huì)指明錯(cuò)誤原因是:“For”必須以匹配的“Next”結(jié)束。圖7-1程序中出現(xiàn)的語(yǔ)法錯(cuò)誤:For與Next不匹配(2)如果將代碼7-1中的第01行代碼添加注釋標(biāo)識(shí),變成一條注釋?zhuān)幾g時(shí)會(huì)出現(xiàn)如圖7-2所示的錯(cuò)誤提示,【任務(wù)列表】窗口中也會(huì)指明
4、錯(cuò)誤原因是:變量“i”未聲明。圖7-2程序中出現(xiàn)的語(yǔ)法錯(cuò)誤:名稱(chēng)“i”未聲明如圖7-3所示,也是出現(xiàn)類(lèi)似名稱(chēng)未聲明的錯(cuò)誤,但程序已聲明一個(gè)名為“Product”的變量,為什么仍然會(huì)出現(xiàn)“名稱(chēng)未聲明”的錯(cuò)誤呢?仔細(xì)觀察一下出錯(cuò)處的程序代碼,把變量名中的“o”寫(xiě)成了“0”,雖然只有一個(gè)字母輸錯(cuò),但程序編譯仍會(huì)出錯(cuò),如果在紙上書(shū)寫(xiě)單詞,一個(gè)字母錯(cuò)了,問(wèn)題不大,但編寫(xiě)程序時(shí)卻不能大意。編寫(xiě)程序時(shí),經(jīng)常會(huì)出現(xiàn)類(lèi)似的錯(cuò)誤:已聲明變量沒(méi)有使用,使用的變量卻沒(méi)有聲明。不過(guò)VisualBasic.NET中大小寫(xiě)字母不區(qū)分。圖7-3程序中出現(xiàn)的語(yǔ)法錯(cuò)誤:名稱(chēng)“Pr0duc
5、t”未聲明編寫(xiě)程序時(shí)有幾個(gè)字符容易混淆,如果輸入錯(cuò)誤還不容易發(fā)現(xiàn),例如“l(fā)”與“1”、“o”與“0”、“Z”與“2”等,含有這些字符的標(biāo)識(shí)符輸入時(shí)一定要細(xì)心。另外,有些非標(biāo)準(zhǔn)的鍵盤(pán)字符不能作標(biāo)識(shí)符,例如“?、?、?、?”等。(3)代碼7-1中將變量i聲明為Char類(lèi)型,程序運(yùn)行時(shí)出現(xiàn)如圖7-4所示的錯(cuò)誤提示,“任務(wù)列表”窗口中指明了錯(cuò)誤原因。圖7-4程序中由于變量類(lèi)型不符產(chǎn)生的語(yǔ)法錯(cuò)誤7.1.2運(yùn)行錯(cuò)誤程序執(zhí)行過(guò)程中,由于語(yǔ)句試圖執(zhí)行不可能實(shí)現(xiàn)的操作所產(chǎn)生的錯(cuò)誤就屬于運(yùn)行錯(cuò)誤。運(yùn)行錯(cuò)誤一般與語(yǔ)法錯(cuò)誤無(wú)關(guān),在編譯階段不顯現(xiàn),編譯器不能捕獲運(yùn)行錯(cuò)誤,只有程
6、序運(yùn)行時(shí)才會(huì)發(fā)生。1.實(shí)例分析【實(shí)例7-2】【設(shè)計(jì)任務(wù)】編寫(xiě)程序計(jì)算3個(gè)學(xué)生各2門(mén)課程的平均成績(jī)?!驹O(shè)計(jì)過(guò)程】(1)新建一個(gè)控制臺(tái)應(yīng)用程序項(xiàng)目Chapter7_2。(2)編寫(xiě)程序代碼,實(shí)現(xiàn)其功能。程序代碼如代碼7-2所示。代碼7-2010203040506DimScore(,)AsSingle={{76,86},{92,88.5},{81.5,95}}DimAverageAsSingleDimi,j,n,mAsIntegern=Score.GetLength(0)'數(shù)組Score第一維的大小m=Score.GetLength(1)'數(shù)組Score第二維
7、的大小Console.WriteLine(“第一維大小為{0},第二維大小為{1}",n,m)代碼7-207080910111213Fori=0Ton-1Forj=0Tom-1Average=Average+Score(i,j)NextNextAverage=Average/(n*m)Console.WriteLine(n&"個(gè)學(xué)生各"&m&“門(mén)課程的平均成績(jī)?yōu)?"&Average)【分析、改正錯(cuò)誤】(1)如果將代碼7-2中的第07行“Fori=0Ton-1”改為“Fori=0Ton”,程序運(yùn)行時(shí)會(huì)出現(xiàn)如圖7-5所示的錯(cuò)誤提示。其原因是二維數(shù)組Scor
8、e初始化時(shí)已確定了第一維的大小為3,索引的取值范圍只能為“0~2”,循環(huán)變量的終止值修改后,索