visual basic基礎(chǔ)與案例開發(fā)詳解_第1頁
visual basic基礎(chǔ)與案例開發(fā)詳解_第2頁
visual basic基礎(chǔ)與案例開發(fā)詳解_第3頁
visual basic基礎(chǔ)與案例開發(fā)詳解_第4頁
visual basic基礎(chǔ)與案例開發(fā)詳解_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

VisualBasic程序設(shè)計時,不論程序員多么優(yōu)秀和仔細,程序代碼可能出Err12章程序錯誤的處理及調(diào)常見的程序錯誤類DimDlmDlmDlmintAAs 本想定義intAPrintPrint“第十二章 '本想輸出”第十二章”,雙引號錯IfIfintA=999intA=1End少了對于以上出現(xiàn)類型語法錯誤,VisualBasic提供了“自動語法檢測”功能來應(yīng)對,即當(dāng)用戶輸入完一行代碼后,一旦光標(biāo)移動到其他行,VisualBaisc會自動對輸入完畢的程序行步項”框步12.1所示,單擊【確定】按鈕,完成自動語法檢測功能的設(shè)置。12.212.312.4 圖12.1選擇“自動語法檢測”復(fù)選 圖12.2輸入錯誤的關(guān)鍵圖12.3輸入錯誤的標(biāo)點符 圖 輸入不完整的語PrivateSubForm_Load()DimmAsIntegerDimnAsIntegern=1Form=1To5n=n+1'缺少Next與For匹End所示的提 框沒有變12.1】1+2+…+9DimDimintA,SumAsIntegerForintA=1To9Sum=Sun+intANextintAPrint其中“Sun”是“Sum運行時輸出的Sum值為9,這顯然本是本意,這是由于VisualBasic允許非變量的OptionOption或者在建立工程之前,在如圖12.1所示的框中,選定【要求變量】復(fù)選框即可。此后若出現(xiàn)此類錯誤,則會彈出如圖12.6所示的提示框。圖 提示 圖 提示運行錯誤是指在運行模式下產(chǎn)生的編譯錯誤即代碼執(zhí)行了操作而引起的錯誤此類錯誤只能在運行程序時才能發(fā)現(xiàn)。如數(shù)據(jù)溢出、作的文件不存在和除數(shù)為零等?!纠?2.2】將除數(shù)為零為例來說明運行時錯誤現(xiàn)象,具體代碼如下OptionOptionPrivateSubDimsAsDoubles=DIV(1,0)End1FunctionDIV(mAsDouble,nAsDouble)As DimResultAsDoubleResult=m/nDIV=End在運行該程序時,系統(tǒng)便會彈出框,提示出錯信息,具體如圖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,如果用戶在變量申明時已經(jīng)mnString,則這個邏輯錯誤便能避免。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所示。圖 “通用”選項并不會全面編譯整個工程項目,而只是在某些過,才對這些過程進行編譯。使譯時,迫使對代碼進行大量的糾錯。如果用戶在IDE中調(diào)試項目,則VsiualBasic常常必須以便進行全編譯這樣可以在編程的過程中能夠定期糾正編譯錯誤而不必糾正大量設(shè)計錯誤處理的步VisualBasicOnError語句來捕捉錯誤,OnOnErrorGoToLineLineLine可以是任何行或是行號;如果發(fā)生一個運行時錯誤則會跳到Line,激活錯誤處理程序。需要注OnOnErrorGoTOOnErrorGoTo'發(fā)生錯誤時,跳到從行號10開始的錯誤處理子程'發(fā)生錯誤時,跳到從Example開始的錯誤處理程OnErrorResumeOnErrorResumeNext語句。OnErrorGoTo說明:OnError語句,則任何運行時錯誤都是致命的;也就是說,結(jié)果會00OnError說明:OnError語句,則任何運行時錯誤都是致命的;也就是說,結(jié)果會SubSubOnErrorGoToExitSubEndFunctionFunction過程OnErrorGoToExitFunctionEnd在編寫錯誤處理程序時還會常使用到Err對象,用戶可以通過Err對象來獲取錯誤的消息,當(dāng)出現(xiàn)錯誤時,有關(guān)錯誤的信息會在Err對象中。下面詳細介紹Err對象的相關(guān)知ErrErrOnError捕捉到錯誤后,ErrNumber顯示對應(yīng)錯誤編號,即Err對象的屬性來確定產(chǎn)生錯誤的原因。ErrErrNumber、Description、Source、HelpFileHelpContext。Number屬性的作用是用于返回或設(shè)置表示錯誤的代碼,其語法格式如下: Err.Number[=錯誤代碼 Long12.112.1代信代信35679DLLActiveX部件不能建立對象或返回對此DLLDLL連接至型態(tài)程序庫或?qū)ο蟪绦驇斓倪h代代信代信I/ODLL沒有權(quán)路徑/文件錯VisualBasic不支持尚未設(shè)置對象變量或WithForNullFriendAutoRedrawDLL無效的類不能用這種類型的打印窗體圖不能系統(tǒng)ActiveX不能將文件保存至ActiveXActiveX代信代信ActiveXDescription屬性的作用是返回或設(shè)置一個與Err對象相關(guān)聯(lián)的描述性字符串。DescriptionNumberVisualBasic運行時ErrorDescription屬性。【例12.5】輸入如下代碼,運行程序時會彈出輸出框,如圖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,錯誤EndIfEndSub Err.Source[=字符串表達式 PrivatePrivateSubForm_DblClick()OnErrorGoToHandlerDimstrAAsStringOpen"C:\Example.txt"ForInputAs#1Input#1,strAClose#1ExitIfErr.Number=53MsgBoxErr.Description+vbCrLf+'C盤沒有Example.txt文"錯誤產(chǎn)生于Err.Source,vbCritical,錯誤EndEndEndHelpFile屬性的作用是返回或設(shè)置一個字符串表達式,即 Windows幫助文件的完整路徑,默認為VisualBasic幫助文件。HelpContext屬性的作用是返回或設(shè)置一個字符串表達式,即 Windows幫助文件中一個的上下文ID,前提是已指定HelpFile屬性。ErrErr對象的常用方法主要有:ClearRaiseClearErrClear方法重新設(shè)置Err對象的屬性需要注意的是執(zhí)行以下語句時系統(tǒng)將自動調(diào)用ClearResumeOnErrorExitSubExitFunction12.14所示的提示框。PrivateSubForm_Click()DimResult(10)PrivateSubForm_Click()DimResult(10)AsIntegerDimiAsIntegerOnErrorResumeNextDoUntili=10Result(i)=Rnd*i*5000IfErr.Number<>0ThenMsgBoxErr.Description,vbCritical,錯誤Err.HelpFile,Err.HelpContexti=i+1EndIfEnd圖12.12提示 圖12.13提示 圖12.14提示RaiseErr.RaiseErr.RaiseNumber,Source,Description,HelpFile,其中,NumberRaise時不指定某些參數(shù),并ErrErr對象的屬性值。RaiseRaiseError12.8】Number666錯誤,并將該錯誤產(chǎn)生出,彈出如圖12.15所示的提示框

圖12.15提示PrivatePrivateSubForm_Click()OnErrorGoToHandlerErr.Number=666Err.Description典型錯誤Err.Raise666ExitSubMsgBoxErr.Description,vbCritical,"ErrorCode#"&Err.NumberResumeEndErrErr的錯誤時,ErrResume對象的Raise方法等。VisualBasic提供的四種退出錯誤程序的方法介紹如下Resume[0]ResumeNext一次調(diào)用包含錯誤處理程序的過程的語句(OnErrorResumeNext語句),從緊隨ResumeLineLineLine處恢復(fù)運行,Line參數(shù)是行或行號,必須和錯誤處理程序在同一個過程中。Err.RaiseNumber:=NumberErrRaise方法可以觸發(fā)運行時錯誤,在錯誤處理程序中執(zhí)行這一語句,VisualBaisc將會搜索另一個錯誤處理程程序錯誤處理的典型應(yīng)【例12.9】“除數(shù)為零”的錯誤處理,執(zhí)行錯誤處理程序后,重新返回執(zhí)行原出錯語(Resume語句來實現(xiàn))PrivatePrivateSubForm_Click()DimA,B,CAsSingleOnErrorGoToCheckErrA=B=C=A/Print計算結(jié)果為:&CExitSubIferr.Number=11MsgBoxerr.Description,vbCritical,"錯誤"B=1 '修改B值 EndIfEndSubCAB語句時發(fā)生錯誤,進入錯誤處理程序,由于錯誤是由除數(shù)是0產(chǎn)生的彈出框如圖12.16所示因此在錯誤處理程序修改B值用Resume12.17所示。圖12.16提示 圖12.17達式輸出結(jié)【例12.10句nErrorResumet。PrivatePrivateSubForm_DblClick()DimA,B,CAsSingleOnErrorResumeA=B=C=C=A/Print計算結(jié)果為:&CExitSubEndCAB語句時發(fā)生錯誤,OnErrorResumeNextC值的初始值打印輸出,打印輸出效12.18所示。12.18一條語句(ResumeNext語句來實現(xiàn))。PrivatePrivateSubForm_Click()DimA,B,CAsSingleOnErrorGoToCheckErrA=B=C=C=A/Print計算結(jié)果為:&CExitSubIferr.Number=11MsgBoxerr.Description,vbCritical,錯誤"ResumeNextEndEndCAB語句時發(fā)生錯誤,進入錯誤處理程序,由于錯誤是由除數(shù)是0產(chǎn)生的,彈出框,如圖12.18所示,用ResumeNext語句返回執(zhí)行出錯語句的下一條語句,因此直接將C值的初始值打印輸出,打印輸出效果如圖12.19所示,本例與ResumeNext語句能夠?qū)崿F(xiàn)提示錯誤信息功能。圖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)用程序代碼的下一個可執(zhí)行行,并到過程執(zhí)行應(yīng)用程序代碼的下一個可執(zhí)行行,但不到過程當(dāng)處于中斷模式時,呈現(xiàn)一個框來顯示所有已被

溫馨提示

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

評論

0/150

提交評論