也是一個(gè)實(shí)踐性很強(qiáng)的工作需要在實(shí)踐中不斷總結(jié)經(jīng)驗(yàn).ppt_第1頁(yè)
也是一個(gè)實(shí)踐性很強(qiáng)的工作需要在實(shí)踐中不斷總結(jié)經(jīng)驗(yàn).ppt_第2頁(yè)
也是一個(gè)實(shí)踐性很強(qiáng)的工作需要在實(shí)踐中不斷總結(jié)經(jīng)驗(yàn).ppt_第3頁(yè)
也是一個(gè)實(shí)踐性很強(qiáng)的工作需要在實(shí)踐中不斷總結(jié)經(jīng)驗(yàn).ppt_第4頁(yè)
也是一個(gè)實(shí)踐性很強(qiáng)的工作需要在實(shí)踐中不斷總結(jié)經(jīng)驗(yàn).ppt_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余11頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、第 8 章,程序調(diào)試與錯(cuò)誤處理,程序調(diào)試的主要任務(wù):查找程序的錯(cuò)誤和排除錯(cuò)誤 本章主要內(nèi)容,錯(cuò)誤類型,程序調(diào)試,錯(cuò)誤處理,退出,第8章 程序調(diào)試與錯(cuò)誤處理,三類錯(cuò)誤類型:編譯錯(cuò)誤,運(yùn)行時(shí)錯(cuò)誤和邏輯錯(cuò)誤 1. 編譯錯(cuò)誤 編譯錯(cuò)誤是指在程序編譯過程中出現(xiàn)的錯(cuò)誤。通常是由于不正確書寫代碼而產(chǎn)生的。 如:關(guān)鍵字寫錯(cuò),遺漏標(biāo)點(diǎn)符號(hào),括號(hào)不匹配等。 示例: Foor t = 1 To 100 2. 運(yùn)行時(shí)錯(cuò)誤 運(yùn)行時(shí)的錯(cuò)誤是指應(yīng)用程序在運(yùn)行期間執(zhí)行了非法操作所發(fā)生的錯(cuò)誤。 舉例(“下標(biāo)越界”): Dim D(20) As Integer, k As Integer For k=1 To 30 D(k)=k

2、*K Next k,8.1 VB程序中的錯(cuò)誤類型,3. 邏輯錯(cuò)誤 邏輯錯(cuò)誤使程序運(yùn)行時(shí)得不到預(yù)期的結(jié)果。這種程序沒有語(yǔ)法錯(cuò)誤,也能運(yùn)行,但卻得不到正確的結(jié)果。 例如,在一個(gè)算術(shù)表達(dá)式中,把乘號(hào)“*”寫成了加號(hào)“+”,條件語(yǔ)句的條件寫錯(cuò),循環(huán)次數(shù)計(jì)算錯(cuò)誤等 例如,要求10!,若采用: Private Sub Form_Load() Dim t As Integer For i=1 To 10 t=t*i Next i Show :Print t End Sub 運(yùn)行程序時(shí)輸出的結(jié)果是0 通常,調(diào)試程序過程中所花的大部分時(shí)間和精力都在邏輯錯(cuò)誤上,8.2.1 程序工作模式 設(shè)計(jì)模式、運(yùn)行模式和中斷模

3、式 1設(shè)計(jì)模式 可以建立應(yīng)用程序的用戶界面,設(shè)置控件的屬性,編寫程序代碼等 2. 運(yùn)行模式 可以測(cè)試程序的運(yùn)行結(jié)果,可以與應(yīng)用程序?qū)υ?,還可以查看程序代碼,但不能修改程序 3. 中斷模式 可以利用各種調(diào)試手段檢查或更改某些變量或表達(dá)式的值,或者在斷點(diǎn)附近單步執(zhí)行程序,以便觀察程序的動(dòng)態(tài)變化,找出可能的錯(cuò)誤,8.2 程序調(diào)試,例8.0,在代碼窗口中設(shè)置斷點(diǎn),鼠標(biāo) 單擊,使用“調(diào)試”菜單或“調(diào)試”工具欄 1切換斷點(diǎn) “切換斷點(diǎn)”按鈕用來設(shè)置斷點(diǎn) 2. 逐語(yǔ)句 逐條語(yǔ)句執(zhí)行程序,每執(zhí)行一條語(yǔ)句后就返回中斷模式 如果執(zhí)行的是過程調(diào)用的代碼(如Call),“逐語(yǔ)句”操作也會(huì)跟蹤到被調(diào)過程中繼續(xù)一條語(yǔ)句一

4、條語(yǔ)句的執(zhí)行 3. 逐過程 逐過程執(zhí)行是以整個(gè)函數(shù)或過程為一個(gè)整體,一次執(zhí)行。逐過程與逐語(yǔ)句一樣,能夠一條語(yǔ)句一條語(yǔ)句地執(zhí)行代碼。把被調(diào)用的函數(shù)或過程當(dāng)作一個(gè)語(yǔ)句來看待,8.2.2 VB調(diào)試工具,4. 跳出 單擊“調(diào)試”工具欄上的“跳出”按鈕,則VB將連續(xù)執(zhí)行完該過程的其余部分,返回調(diào)用過程的下一條語(yǔ)句并回復(fù)中斷模式 5. 本地窗口 顯示當(dāng)前過程中所有變量和活動(dòng)窗體的所有屬性值 Me代表當(dāng)前窗體;單擊“+”號(hào)或“-”號(hào) 6. 立即窗口 可以檢查某個(gè)屬性或者變量的值,也可以對(duì)表達(dá)式求值,或?yàn)樽兞炕驅(qū)傩再x值等 7. 監(jiān)視窗口 對(duì)用戶定義的表達(dá)式進(jìn)行監(jiān)視,例8.1 運(yùn)行以下的窗體裝載事件過程 Pri

5、vate Sub Form_Load() Dim mys As Integer mys = 學(xué)習(xí)VB程序設(shè)計(jì)語(yǔ)言 MsgBox mys End Sub 運(yùn)行時(shí)系統(tǒng)將彈出一個(gè)出錯(cuò)消息框,其中提示發(fā)生“類型不匹配”的錯(cuò)誤。為了檢查出錯(cuò)原因,可以在立即窗口中鍵入以下命令來檢查變量的值: ? mys ?是Print的簡(jiǎn)寫 從顯示結(jié)果可以看出,出錯(cuò)前變量mys的當(dāng)前值為數(shù)值0,它是一個(gè)整型變量,不能用字符串學(xué)習(xí)VB程序設(shè)計(jì)語(yǔ)言為它賦值,故發(fā)生了“類型不匹配”的錯(cuò)誤。,例8.1,對(duì)于某些可預(yù)見的錯(cuò)誤,可以利用VB的錯(cuò)誤處理程序捕獲它,對(duì)其進(jìn)行適當(dāng)?shù)奶幚?,并使程序繼續(xù)執(zhí)行。這樣就能夠使開發(fā)的軟件具有更強(qiáng)的適

6、應(yīng)性。 8.3.1 錯(cuò)誤處理的步驟 (1) 利用Err對(duì)象記錄錯(cuò)誤的類型、出錯(cuò)原因等。 (2) 強(qiáng)制轉(zhuǎn)移到用戶自編的“錯(cuò)誤處理程序段”的入口。 (3) 在“錯(cuò)誤處理程序段”內(nèi),根據(jù)具體錯(cuò)誤進(jìn)行處理,如果問題有解決方法,則在處理后返回原程序某處繼續(xù)執(zhí)行,否則,停止程序執(zhí)行,8.3 錯(cuò)誤處理,Err對(duì)象是全局性的固有對(duì)象,用來保存最新的運(yùn)行時(shí)錯(cuò)誤信息,其屬性由錯(cuò)誤生成者設(shè)置 1. 主要屬性 (1) Number屬性:數(shù)值。范圍為065535,保存錯(cuò)誤號(hào) (2) Source屬性:字符串。指明錯(cuò)誤產(chǎn)生的對(duì)象或應(yīng)用程序的名稱 (3) Description屬性:字符串。用于記錄簡(jiǎn)短的錯(cuò)誤信息描述 2.

7、 常用方法 (1) Clear方法:用于清除Err對(duì)象的當(dāng)前屬性值。 (2) Raise方法:產(chǎn)生錯(cuò)誤,用于調(diào)試錯(cuò)誤處理程序段。 例如,執(zhí)行語(yǔ)句Err.Raise 55將產(chǎn)生55號(hào)運(yùn)行時(shí)錯(cuò)誤,即“文件已打開”錯(cuò)誤,8.3.2 Err對(duì)象,使用On Error語(yǔ)句可以捕獲錯(cuò)誤,其語(yǔ)法格式如下: On Error 標(biāo)號(hào) 通常,該語(yǔ)句放置在過程的開始位置。在程序運(yùn)行過程中,當(dāng)該語(yǔ)句后面的代碼出錯(cuò)時(shí),則程序就會(huì)自動(dòng)跳轉(zhuǎn)到標(biāo)號(hào)所指定的程序行去運(yùn)行。 標(biāo)號(hào)所指示的程序行通常為錯(cuò)誤處理程序段的開始行。 一個(gè)使用錯(cuò)誤處理的示例: On Error GoTo ErrLine 以后出錯(cuò)時(shí)轉(zhuǎn)移至ErrLine .

8、. . ErrLine: 標(biāo)號(hào) . . . Resume 返回語(yǔ)句,9.3.3 捕獲錯(cuò)誤語(yǔ)句(On Error),當(dāng)指定的錯(cuò)誤處理完成后,應(yīng)該控制程序返回到合適的位置繼續(xù)執(zhí)行。 返回語(yǔ)句Resume有三種用法: (1)Resume 0:程序返回到出錯(cuò)語(yǔ)句處繼續(xù)執(zhí)行。 (2)Resume Next:程序返回到出錯(cuò)語(yǔ)句的下一語(yǔ)句。 (3)Resume 標(biāo)號(hào):程序返回到標(biāo)號(hào)處繼續(xù)執(zhí)行。,8.3.4 退出錯(cuò)誤處理語(yǔ)句(Resume),錯(cuò)誤處理流程,主程序,On Error GoTo 標(biāo)號(hào) 結(jié)束,對(duì)錯(cuò)誤進(jìn)行處理 Resume,錯(cuò)誤處理程序段,標(biāo)號(hào):,出錯(cuò)時(shí)轉(zhuǎn)移,處理后返回 指定的位置,輸入某個(gè)數(shù),求該數(shù)

9、的平方根。當(dāng)用戶輸入負(fù)數(shù)時(shí),使用On Error.Resume進(jìn)行處理 Private Sub Form_Load() Dim x As Single, y As Single, i As String On Error GoTo errln 以下出錯(cuò)時(shí)轉(zhuǎn)移到errln Show : i = i 為實(shí)數(shù)標(biāo)記 x = Val(InputBox(請(qǐng)輸入一個(gè)數(shù)) y = Sqr(x) x 為負(fù)數(shù)時(shí)會(huì)出錯(cuò) Print y; i : Exit Sub 顯示及退出過程 errln: 標(biāo)號(hào) If Err.Number = 5 Then 本錯(cuò)誤的錯(cuò)誤碼為5 x = -x 轉(zhuǎn)換為正數(shù) i = i 復(fù)數(shù)標(biāo)記 Resume 返回 Else 其他錯(cuò)誤處理 MsgBox (錯(cuò)誤發(fā)生在 & Err.Source & , 代碼為 & _ Err.Number & , 即 & Err.Description) End End If End Sub,例8.3 錯(cuò)誤處理程序示例,例8.3,程序運(yùn)行時(shí),當(dāng)用戶輸入一個(gè)正數(shù)時(shí),則顯示出該數(shù)的平方根;如果

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論