版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VisualBasic程序設(shè)計(jì)時(shí),不論程序員多么優(yōu)秀和仔細(xì),程序代碼可能出Err12章程序錯(cuò)誤的處理及調(diào)常見的程序錯(cuò)誤類DimDlmDlmDlmintAAs 本想定義intAPrintPrint“第十二章 '本想輸出”第十二章”,雙引號錯(cuò)IfIfintA=999intA=1End少了對于以上出現(xiàn)類型語法錯(cuò)誤,VisualBasic提供了“自動(dòng)語法檢測”功能來應(yīng)對,即當(dāng)用戶輸入完一行代碼后,一旦光標(biāo)移動(dòng)到其他行,VisualBaisc會自動(dòng)對輸入完畢的程序行步項(xiàng)”框步12.1所示,單擊【確定】按鈕,完成自動(dòng)語法檢測功能的設(shè)置。12.212.312.4 圖12.1選擇“自動(dòng)語法檢測”復(fù)選 圖12.2輸入錯(cuò)誤的關(guān)鍵圖12.3輸入錯(cuò)誤的標(biāo)點(diǎn)符 圖 輸入不完整的語PrivateSubForm_Load()DimmAsIntegerDimnAsIntegern=1Form=1To5n=n+1'缺少Next與For匹End所示的提 框沒有變12.1】1+2+…+9DimDimintA,SumAsIntegerForintA=1To9Sum=Sun+intANextintAPrint其中“Sun”是“Sum運(yùn)行時(shí)輸出的Sum值為9,這顯然本是本意,這是由于VisualBasic允許非變量的OptionOption或者在建立工程之前,在如圖12.1所示的框中,選定【要求變量】復(fù)選框即可。此后若出現(xiàn)此類錯(cuò)誤,則會彈出如圖12.6所示的提示框。圖 提示 圖 提示運(yùn)行錯(cuò)誤是指在運(yùn)行模式下產(chǎn)生的編譯錯(cuò)誤即代碼執(zhí)行了操作而引起的錯(cuò)誤此類錯(cuò)誤只能在運(yùn)行程序時(shí)才能發(fā)現(xiàn)。如數(shù)據(jù)溢出、作的文件不存在和除數(shù)為零等。【例12.2】將除數(shù)為零為例來說明運(yùn)行時(shí)錯(cuò)誤現(xiàn)象,具體代碼如下OptionOptionPrivateSubDimsAsDoubles=DIV(1,0)End1FunctionDIV(mAsDouble,nAsDouble)As DimResultAsDoubleResult=m/nDIV=End在運(yùn)行該程序時(shí),系統(tǒng)便會彈出框,提示出錯(cuò)信息,具體如圖12.7所示圖12.7提示【例12.36符串“66+”連接起來得到“666PrivatePrivateSubDimm,mm=n=DimkAsStringk=m+nLabel1.Caption=End'Label1誤的根本原因是使用變量類型不當(dāng)造成的即程序先將n轉(zhuǎn)換為整型變量然后與m相加,得出的結(jié)果是72,然后再將72轉(zhuǎn)換為字符串賦值給k,如果用戶在變量申明時(shí)已經(jīng)mnString,則這個(gè)邏輯錯(cuò)誤便能避免。12.812.4】1*2*3*4*5*6*7*8*9*10OptionOptionPrivateSubForm_Load()DimintA,intBAsIntegerForintB=1To10intA=intA*intBNextintBPrint"intA=";End12.9AinA0m,BsntegerorrB=1To10之間添加一行代碼:intAintA=12.10圖12.9顯示非預(yù)期的結(jié) 圖12.10正確結(jié)12.11所示。圖 “通用”選項(xiàng)并不會全面編譯整個(gè)工程項(xiàng)目,而只是在某些過,才對這些過程進(jìn)行編譯。使譯時(shí),迫使對代碼進(jìn)行大量的糾錯(cuò)。如果用戶在IDE中調(diào)試項(xiàng)目,則VsiualBasic常常必須以便進(jìn)行全編譯這樣可以在編程的過程中能夠定期糾正編譯錯(cuò)誤而不必糾正大量設(shè)計(jì)錯(cuò)誤處理的步VisualBasicOnError語句來捕捉錯(cuò)誤,OnOnErrorGoToLineLineLine可以是任何行或是行號;如果發(fā)生一個(gè)運(yùn)行時(shí)錯(cuò)誤則會跳到Line,激活錯(cuò)誤處理程序。需要注OnOnErrorGoTOOnErrorGoTo'發(fā)生錯(cuò)誤時(shí),跳到從行號10開始的錯(cuò)誤處理子程'發(fā)生錯(cuò)誤時(shí),跳到從Example開始的錯(cuò)誤處理程OnErrorResumeOnErrorResumeNext語句。OnErrorGoTo說明:OnError語句,則任何運(yùn)行時(shí)錯(cuò)誤都是致命的;也就是說,結(jié)果會00OnError說明:OnError語句,則任何運(yùn)行時(shí)錯(cuò)誤都是致命的;也就是說,結(jié)果會SubSubOnErrorGoToExitSubEndFunctionFunction過程OnErrorGoToExitFunctionEnd在編寫錯(cuò)誤處理程序時(shí)還會常使用到Err對象,用戶可以通過Err對象來獲取錯(cuò)誤的消息,當(dāng)出現(xiàn)錯(cuò)誤時(shí),有關(guān)錯(cuò)誤的信息會在Err對象中。下面詳細(xì)介紹Err對象的相關(guān)知ErrErrOnError捕捉到錯(cuò)誤后,ErrNumber顯示對應(yīng)錯(cuò)誤編號,即Err對象的屬性來確定產(chǎn)生錯(cuò)誤的原因。ErrErrNumber、Description、Source、HelpFileHelpContext。Number屬性的作用是用于返回或設(shè)置表示錯(cuò)誤的代碼,其語法格式如下: Err.Number[=錯(cuò)誤代碼 Long12.112.1代信代信35679DLLActiveX部件不能建立對象或返回對此DLLDLL連接至型態(tài)程序庫或?qū)ο蟪绦驇斓倪h(yuǎn)代代信代信I/ODLL沒有權(quán)路徑/文件錯(cuò)VisualBasic不支持尚未設(shè)置對象變量或WithForNullFriendAutoRedrawDLL無效的類不能用這種類型的打印窗體圖不能系統(tǒng)ActiveX不能將文件保存至ActiveXActiveX代信代信ActiveXDescription屬性的作用是返回或設(shè)置一個(gè)與Err對象相關(guān)聯(lián)的描述性字符串。DescriptionNumberVisualBasic運(yùn)行時(shí)ErrorDescription屬性?!纠?2.5】輸入如下代碼,運(yùn)行程序時(shí)會彈出輸出框,如圖12.12所示,提示文件PrivateSubForm_Click()OnErrorGoToHandlerDimstrAAsStringstrA="TEST"Open"C:\Example.txt"ForInputAs#1Print#1,strAClose#1ExitIfErr.Number=53'C盤沒有Example.txt文MsgBoxPrivateSubForm_Click()OnErrorGoToHandlerDimstrAAsStringstrA="TEST"Open"C:\Example.txt"ForInputAs#1Print#1,strAClose#1ExitIfErr.Number=53'C盤沒有Example.txt文MsgBoxErr.Description,vbCritical,錯(cuò)誤EndIfEndSub Err.Source[=字符串表達(dá)式 PrivatePrivateSubForm_DblClick()OnErrorGoToHandlerDimstrAAsStringOpen"C:\Example.txt"ForInputAs#1Input#1,strAClose#1ExitIfErr.Number=53MsgBoxErr.Description+vbCrLf+'C盤沒有Example.txt文"錯(cuò)誤產(chǎn)生于Err.Source,vbCritical,錯(cuò)誤EndEndEndHelpFile屬性的作用是返回或設(shè)置一個(gè)字符串表達(dá)式,即 Windows幫助文件的完整路徑,默認(rèn)為VisualBasic幫助文件。HelpContext屬性的作用是返回或設(shè)置一個(gè)字符串表達(dá)式,即 Windows幫助文件中一個(gè)的上下文ID,前提是已指定HelpFile屬性。ErrErr對象的常用方法主要有:ClearRaiseClearErrClear方法重新設(shè)置Err對象的屬性需要注意的是執(zhí)行以下語句時(shí)系統(tǒng)將自動(dòng)調(diào)用ClearResumeOnErrorExitSubExitFunction12.14所示的提示框。PrivateSubForm_Click()DimResult(10)PrivateSubForm_Click()DimResult(10)AsIntegerDimiAsIntegerOnErrorResumeNextDoUntili=10Result(i)=Rnd*i*5000IfErr.Number<>0ThenMsgBoxErr.Description,vbCritical,錯(cuò)誤Err.HelpFile,Err.HelpContexti=i+1EndIfEnd圖12.12提示 圖12.13提示 圖12.14提示RaiseErr.RaiseErr.RaiseNumber,Source,Description,HelpFile,其中,NumberRaise時(shí)不指定某些參數(shù),并ErrErr對象的屬性值。RaiseRaiseError12.8】Number666錯(cuò)誤,并將該錯(cuò)誤產(chǎn)生出,彈出如圖12.15所示的提示框
圖12.15提示PrivatePrivateSubForm_Click()OnErrorGoToHandlerErr.Number=666Err.Description典型錯(cuò)誤Err.Raise666ExitSubMsgBoxErr.Description,vbCritical,"ErrorCode#"&Err.NumberResumeEndErrErr的錯(cuò)誤時(shí),ErrResume對象的Raise方法等。VisualBasic提供的四種退出錯(cuò)誤程序的方法介紹如下Resume[0]ResumeNext一次調(diào)用包含錯(cuò)誤處理程序的過程的語句(OnErrorResumeNext語句),從緊隨ResumeLineLineLine處恢復(fù)運(yùn)行,Line參數(shù)是行或行號,必須和錯(cuò)誤處理程序在同一個(gè)過程中。Err.RaiseNumber:=NumberErrRaise方法可以觸發(fā)運(yùn)行時(shí)錯(cuò)誤,在錯(cuò)誤處理程序中執(zhí)行這一語句,VisualBaisc將會搜索另一個(gè)錯(cuò)誤處理程程序錯(cuò)誤處理的典型應(yīng)【例12.9】“除數(shù)為零”的錯(cuò)誤處理,執(zhí)行錯(cuò)誤處理程序后,重新返回執(zhí)行原出錯(cuò)語(Resume語句來實(shí)現(xiàn))PrivatePrivateSubForm_Click()DimA,B,CAsSingleOnErrorGoToCheckErrA=B=C=A/Print計(jì)算結(jié)果為:&CExitSubIferr.Number=11MsgBoxerr.Description,vbCritical,"錯(cuò)誤"B=1 '修改B值 EndIfEndSubCAB語句時(shí)發(fā)生錯(cuò)誤,進(jìn)入錯(cuò)誤處理程序,由于錯(cuò)誤是由除數(shù)是0產(chǎn)生的彈出框如圖12.16所示因此在錯(cuò)誤處理程序修改B值用Resume12.17所示。圖12.16提示 圖12.17達(dá)式輸出結(jié)【例12.10句nErrorResumet。PrivatePrivateSubForm_DblClick()DimA,B,CAsSingleOnErrorResumeA=B=C=C=A/Print計(jì)算結(jié)果為:&CExitSubEndCAB語句時(shí)發(fā)生錯(cuò)誤,OnErrorResumeNextC值的初始值打印輸出,打印輸出效12.18所示。12.18一條語句(ResumeNext語句來實(shí)現(xiàn))。PrivatePrivateSubForm_Click()DimA,B,CAsSingleOnErrorGoToCheckErrA=B=C=C=A/Print計(jì)算結(jié)果為:&CExitSubIferr.Number=11MsgBoxerr.Description,vbCritical,錯(cuò)誤"ResumeNextEndEndCAB語句時(shí)發(fā)生錯(cuò)誤,進(jìn)入錯(cuò)誤處理程序,由于錯(cuò)誤是由除數(shù)是0產(chǎn)生的,彈出框,如圖12.18所示,用ResumeNext語句返回執(zhí)行出錯(cuò)語句的下一條語句,因此直接將C值的初始值打印輸出,打印輸出效果如圖12.19所示,本例與ResumeNext語句能夠?qū)崿F(xiàn)提示錯(cuò)誤信息功能。圖12.19提示 圖12.20輸出信程序調(diào)試的工】】】】12.2112.21VisualBasic利用【調(diào)試】12.22所示。12.22調(diào)試12.2所示。12.2調(diào)試命令說目結(jié)束程序,相當(dāng)于程序代碼中的End在“代碼”窗口中確定一行,VisualBasic執(zhí)行應(yīng)用程序代碼的下一個(gè)可執(zhí)行行,并到過程執(zhí)行應(yīng)用程序代碼的下一個(gè)可執(zhí)行行,但不到過程當(dāng)處于中斷模式時(shí),呈現(xiàn)一個(gè)框來顯示所有已被
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 雞眼病因介紹
- 債務(wù)如何轉(zhuǎn)讓協(xié)議書
- 關(guān)于就業(yè)協(xié)議
- 個(gè)人單位租車協(xié)議
- 1.2《風(fēng)景談》【中職專用】高一語文(高教版2023基礎(chǔ)模塊上冊)
- (2024)年產(chǎn)噸鋰電池負(fù)極材料石墨化項(xiàng)目可行性研究報(bào)告寫作模板(一)
- 2022-2023學(xué)年天津一中高一(上)期末語文試卷
- 2023年天津市南開區(qū)高考語文一模試卷
- 解析:內(nèi)蒙古通遼市科爾沁左翼中旗2024-2025學(xué)年七年級上學(xué)期期中語文試題(原卷版)-A4
- 2024(半成品預(yù)制菜篇)餐飲供應(yīng)鏈指南
- 遼寧省名校聯(lián)盟2024年高三12月份聯(lián)合考試 語文試卷(含答案解析)
- 《垂體瘤規(guī)范化診治》課件
- 2024年專業(yè)會務(wù)服務(wù)供應(yīng)與采購協(xié)議版B版
- 圖文轉(zhuǎn)換-圖表(小題訓(xùn)練)(解析版)-2025年部編版中考語文一輪復(fù)習(xí)
- 七上語文期末考試復(fù)習(xí)計(jì)劃表
- 2024兒童青少年抑郁治療與康復(fù)痛點(diǎn)調(diào)研報(bào)告 -基于患者家長群體的調(diào)研
- 大數(shù)據(jù)+治理智慧樹知到期末考試答案章節(jié)答案2024年廣州大學(xué)
- 江蘇省建筑與裝飾工程計(jì)價(jià)定額(2014)電子表格版
- 山東省煙臺市2023-2024學(xué)年高二上學(xué)期期末考試數(shù)學(xué)試卷(含答案)
- 2024年中國鐵路南寧局集團(tuán)招聘筆試參考題庫含答案解析
- 國家開放大學(xué)化工節(jié)能課程-復(fù)習(xí)資料期末復(fù)習(xí)題
評論
0/150
提交評論