第十五章程序調(diào)試與出錯(cuò)處理_第1頁
第十五章程序調(diào)試與出錯(cuò)處理_第2頁
第十五章程序調(diào)試與出錯(cuò)處理_第3頁
第十五章程序調(diào)試與出錯(cuò)處理_第4頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第十五章第十五章 程序調(diào)試與出錯(cuò)處理程序調(diào)試與出錯(cuò)處理 本章要求本章要求: 1. 掌握掌握VB程序調(diào)試方法程序調(diào)試方法 2. 學(xué)會(huì)學(xué)會(huì)查找和修改和分析程序錯(cuò)誤的方法查找和修改和分析程序錯(cuò)誤的方法 3. 了解錯(cuò)誤處理的方法:了解錯(cuò)誤處理的方法:捕捉錯(cuò)誤,設(shè)計(jì)的程序來處捕捉錯(cuò)誤,設(shè)計(jì)的程序來處理不同錯(cuò)誤。理不同錯(cuò)誤。 4. 了解程序的打包和發(fā)布。了解程序的打包和發(fā)布。1編譯錯(cuò)誤編譯錯(cuò)誤 指由于違反了VB的有關(guān)語法而產(chǎn)生的錯(cuò)誤(也稱語法錯(cuò)誤)。常見的編譯錯(cuò)誤有:15.1 常見錯(cuò)誤類型Visual Basic程序的錯(cuò)誤分為:編譯錯(cuò)誤運(yùn)行時(shí)錯(cuò)誤邏輯錯(cuò)誤(1)標(biāo)點(diǎn)符號(hào)錯(cuò)(程序中只能使用西文標(biāo)點(diǎn));關(guān)鍵字輸

2、入錯(cuò)(例:Dim寫成Din);一行語句沒有寫完整等, (2)對(duì)象名稱()對(duì)象名稱(Name屬性)寫錯(cuò);屬性)寫錯(cuò);(3 3)對(duì)象的屬性名、方法名,內(nèi)部函數(shù)名寫錯(cuò);)對(duì)象的屬性名、方法名,內(nèi)部函數(shù)名寫錯(cuò);(4 4)變量未定義或變量名寫錯(cuò)(可在通用聲明段加)變量未定義或變量名寫錯(cuò)(可在通用聲明段加Option Explicit,采用變量顯式聲明);,采用變量顯式聲明);(3 3)塊)塊If沒有對(duì)應(yīng)的沒有對(duì)應(yīng)的End If語句;語句;For循環(huán)沒有對(duì)應(yīng)的循環(huán)沒有對(duì)應(yīng)的Next語語句;句;Do循環(huán)沒有對(duì)應(yīng)的循環(huán)沒有對(duì)應(yīng)的Loop語句等,這類錯(cuò)誤當(dāng)語句等,這類錯(cuò)誤當(dāng)VB開始運(yùn)開始運(yùn)行時(shí)提示出錯(cuò)信息,且將

3、出錯(cuò)位置用反色顯示,行時(shí)提示出錯(cuò)信息,且將出錯(cuò)位置用反色顯示,2 運(yùn)行錯(cuò)誤運(yùn)行錯(cuò)誤 VB在運(yùn)行代碼時(shí)指令代碼執(zhí)行了一非法操作引起的在運(yùn)行代碼時(shí)指令代碼執(zhí)行了一非法操作引起的誤指。例如,除法時(shí)分母為零,被操作的驅(qū)動(dòng)器未準(zhǔn)備好誤指。例如,除法時(shí)分母為零,被操作的驅(qū)動(dòng)器未準(zhǔn)備好或磁盤讀寫有錯(cuò)?;驍?shù)組下標(biāo)超界、數(shù)據(jù)溢出等?;虼疟P讀寫有錯(cuò)?;驍?shù)組下標(biāo)超界、數(shù)據(jù)溢出等。運(yùn)行出錯(cuò)也將彈出一個(gè)子窗口,提示出錯(cuò)信息。運(yùn)行出錯(cuò)也將彈出一個(gè)子窗口,提示出錯(cuò)信息。3 邏輯錯(cuò)誤邏輯錯(cuò)誤 程序存在邏輯上的缺陷引起程序運(yùn)行后,得不到所期望的結(jié)果。 例如,使用了不正確的變量類型或指令的次序不對(duì)。又如,循環(huán)中起終值不正確。邏輯

4、錯(cuò)誤也可以產(chǎn)生運(yùn)行錯(cuò)誤。通常,邏輯錯(cuò)誤不會(huì)產(chǎn)生錯(cuò)誤提示信息,需要程序員仔細(xì)地閱讀分析程序。15.2 VB6.0系統(tǒng)調(diào)試工具系統(tǒng)調(diào)試工具15.2.1 設(shè)置自動(dòng)語法檢測(cè)設(shè)置自動(dòng)語法檢測(cè) 在在VB集成開發(fā)環(huán)集成開發(fā)環(huán)境中,選擇境中,選擇“工具工具”菜菜單的單的“選項(xiàng)選項(xiàng)”命令,再命令,再在打開的在打開的“選項(xiàng)選項(xiàng)”對(duì)話對(duì)話框中選框中選“編輯器編輯器”標(biāo)簽,標(biāo)簽, 15.2.2 VB調(diào)試工具調(diào)試工具 Visual Basic 的調(diào)試包括:斷點(diǎn)、中斷表達(dá)式、監(jiān)視表達(dá)式、通過代碼一次經(jīng)過一個(gè)語句或一個(gè)過程、顯示變量和屬性的值。 1、 調(diào)試工具欄調(diào)試工具欄15.3 調(diào)試和排錯(cuò)方法調(diào)試和排錯(cuò)方法15.3.1

5、VB的三種工作模式的三種工作模式 設(shè)計(jì)模式、運(yùn)行模式和中斷模式15.3.2 控制程序的運(yùn)行控制程序的運(yùn)行1 1啟動(dòng)對(duì)象及控制程序的運(yùn)行啟動(dòng)對(duì)象及控制程序的運(yùn)行(1)逐語句運(yùn)行(2)逐過程運(yùn)行(3)從過程中跳出 2 2 設(shè)置斷點(diǎn)設(shè)置斷點(diǎn)15.3.3 程序調(diào)試窗口程序調(diào)試窗口 有三個(gè)調(diào)試窗口,它們是:“立即”窗口、“監(jiān)視”窗口、和“本地”窗口。可單擊視圖菜單中的對(duì)應(yīng)命令打開這些窗口。 (1)“立即”窗口 顯示代碼中正在調(diào)試的語句所產(chǎn)生的信息,或直接往窗口中鍵入的命令所請(qǐng)求的信息。 (2)在中斷模式下,可自動(dòng)顯示出所有在當(dāng)前過程中的變量聲明及變量值。(單擊調(diào)試工具欄上的“本地窗口”按扭或選擇“視圖”

6、菜單的“本地窗口”顯示),如圖15-8所示。 (3) “監(jiān)視”窗口顯示當(dāng)前的監(jiān)視表達(dá)式,在代碼運(yùn)行過程中可決定是否監(jiān)控這些表達(dá)式的值。 例例15.115.1、調(diào)試第六章例6.4傳值、傳址例題,觀察變量的虛實(shí)結(jié)合過程。15.4 出錯(cuò)處理出錯(cuò)處理 所謂錯(cuò)誤處理,就是允許編寫的應(yīng)用程序?qū)﹀e(cuò)誤進(jìn)行響應(yīng)。當(dāng)一個(gè)錯(cuò)誤發(fā)生了,程序能捕捉到這一錯(cuò)誤,并可按程序設(shè)計(jì)者事先設(shè)計(jì)的方法來處理這一錯(cuò)誤。常規(guī)下通過以下步驟在應(yīng)用程序中增加指令捕捉和處理運(yùn)行錯(cuò)誤:1、設(shè)置錯(cuò)誤陷阱、設(shè)置錯(cuò)誤陷阱 在程序適當(dāng)?shù)牡胤郊尤胍恍┱Z句來捕捉錯(cuò)誤,一旦錯(cuò)誤發(fā)生,程序的運(yùn)行將轉(zhuǎn)移到錯(cuò)誤處理程序,根據(jù)所捕獲到的錯(cuò)誤代碼告訴應(yīng)用程序應(yīng)當(dāng)怎樣

7、操作。2、編寫錯(cuò)誤處理程序、編寫錯(cuò)誤處理程序 當(dāng)程序中出現(xiàn)運(yùn)行錯(cuò)誤時(shí),程序的運(yùn)行將轉(zhuǎn)到錯(cuò)誤處理程序,錯(cuò)誤處理程序根據(jù)可預(yù)知的錯(cuò)誤類型決定采取何種措施。 1 設(shè)置錯(cuò)誤陷阱 使用On Error語句可設(shè)置陷阱,捕捉錯(cuò)誤。On Error語句有如下形式: (1) On Error Resume Next發(fā)生錯(cuò)誤時(shí),忽略錯(cuò)誤行,繼續(xù)執(zhí)行下一語句。 (2) On Error GoTo 語句標(biāo)號(hào)語句標(biāo)號(hào)發(fā)生錯(cuò)誤時(shí),使程序轉(zhuǎn)跳到語句標(biāo)號(hào)所指示的程序塊。 (3) On Error GoTo 0表示當(dāng)發(fā)生錯(cuò)誤時(shí),不使用錯(cuò)誤處理程序塊。 2編寫錯(cuò)誤處理程序 編寫錯(cuò)誤處理程序一般要使用到Err 對(duì)象,它是一個(gè)系統(tǒng)對(duì)

8、象,可以通過Err對(duì)象來獲取錯(cuò)誤的消息。當(dāng)出現(xiàn)VB錯(cuò)誤時(shí),有關(guān)錯(cuò)誤的信息存儲(chǔ)在Err對(duì)象中。Err對(duì)象每次只維護(hù)一個(gè)錯(cuò)誤的信息。當(dāng)出現(xiàn)新的錯(cuò)誤時(shí),Err對(duì)象將更新為新的錯(cuò)誤信息。Err 對(duì)象的缺省屬性是Number屬性。當(dāng)運(yùn)行時(shí)錯(cuò)誤發(fā)生時(shí),Err對(duì)象的屬性被填入明確識(shí)別錯(cuò)誤的信息以及處理這個(gè)錯(cuò)誤所使用的信息。 當(dāng)On Error捕捉到錯(cuò)誤后,Err對(duì)象的屬性Number指示對(duì)應(yīng)錯(cuò)誤號(hào)。在錯(cuò)誤處理程序塊中可使用“Select Case Err.Number”或“If Err.Number = ”語句編寫出錯(cuò)處理。 例如,下面的例如,下面的Test過程是過程是Number 屬性在錯(cuò)誤處理過屬性在錯(cuò)

9、誤處理過程中的典型用法。程中的典型用法。 Private Sub test()ub test() On Error GoTo On Error GoTo out out Dim x, y Dim x, y x = 1 / y x = 1 / y 引發(fā)一個(gè)引發(fā)一個(gè)“除以零除以零”的錯(cuò)誤的錯(cuò)誤 Exit SubExit Sub out: out: MsgBox MsgBox Err.Number Err.Number MsgBoxMsgBox Err.Description Err.Description 檢查是否發(fā)生檢查是否發(fā)生“除以零除以零”的錯(cuò)誤的錯(cuò)誤 If Err.Number = 11

10、ThenIf Err.Number = 11 Then y = y + 1 y = y + 1 End If End If Resume ResumeEnd SubEnd Sub3 3退出錯(cuò)誤處理退出錯(cuò)誤處理在錯(cuò)誤處理程序中,當(dāng)遇到 Exit Sub、Exit Function、End Sub、End Function等語句時(shí),將退出錯(cuò)誤捕獲。在錯(cuò)誤處理程序結(jié)束后,要恢復(fù)原有的運(yùn)行??捎肦esume 語句。語法:(1)Resume 重新執(zhí)行產(chǎn)生錯(cuò)誤的語句(2)Resume Next 重新執(zhí)行產(chǎn)生錯(cuò)誤的語句的下一語句(3)Resume 語句標(biāo)號(hào) 從語句標(biāo)號(hào)初恢復(fù)執(zhí)行 一般來說,一些可以修正的錯(cuò)誤

11、,可使用 Resume,而在錯(cuò)誤處理程序不能修正錯(cuò)誤時(shí)使用 Resume Next或Resume 語句標(biāo)號(hào)。 例例15.2 15.2 編寫一個(gè)判斷一個(gè)給定的文件是否存在的函數(shù),并能處理無效驅(qū)動(dòng)器或軟盤驅(qū)動(dòng)器沒有磁盤等設(shè)備出錯(cuò)問題。 例例15.3 15.3 編寫簡(jiǎn)單的錯(cuò)誤處理程序。處理當(dāng)在文本中輸入數(shù)據(jù)超過整型數(shù)的最大值32767時(shí)給出錯(cuò)誤提示,并可重新輸入。15.5 生成執(zhí)行文件和制作安裝程序生成執(zhí)行文件和制作安裝程序15.5.1 生成執(zhí)行文件生成執(zhí)行文件 從“文件”菜單中選取“生成projectname.exe”,將打開“生成工程”對(duì)話框,如圖15-17所示。這里“projectname” 是工程的應(yīng)用程序名。 15.5.2 使用安裝向?qū)?chuàng)建安裝程序使用安裝向?qū)?chuàng)建安裝程序 為應(yīng)用程序制作安裝程序,打包是創(chuàng)建一個(gè)軟件包的操作,該軟

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論