《Visual Basic程序設(shè)計》課件項目十一_第1頁
《Visual Basic程序設(shè)計》課件項目十一_第2頁
《Visual Basic程序設(shè)計》課件項目十一_第3頁
《Visual Basic程序設(shè)計》課件項目十一_第4頁
《Visual Basic程序設(shè)計》課件項目十一_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目十一程序調(diào)試技巧任務(wù)11.1程序設(shè)計中的常見錯誤類型任務(wù)11.2程序調(diào)試和排錯的方法

任務(wù)11.1程序設(shè)計中的常見錯誤類型

任務(wù)導(dǎo)入

為了易于找出程序中的錯誤,我們將錯誤分為四種類型,即編輯錯誤、編譯錯誤、運行錯誤和邏輯錯誤。本任務(wù)將介紹VB中的常見錯誤,以引起學(xué)生的注意,盡量避免錯誤的發(fā)生。學(xué)習(xí)目標(biāo)

(1)了解使用VB編程時的常見錯誤。

(2)能在使用VB編程時盡量避免出錯。任務(wù)實施

1.了解編輯錯誤

當(dāng)用戶在代碼窗口中編輯代碼時,VB會對程序直接進行語法檢查,當(dāng)發(fā)現(xiàn)程序中存在輸入錯誤,如語句沒輸入完、關(guān)鍵字輸入錯誤等時,VB會彈出對話框,提示出錯信息,如圖11.1所示。這時,用戶必須單擊“確定”按鈕,關(guān)閉提示框,程序中出錯的位置顯示為紅色,出錯部分被高亮度現(xiàn)實,以提示用戶進行修改。圖11.1編輯錯誤

2.了解編譯錯誤

編譯錯誤是指單擊了“啟動”按鈕,VB開始運行程序前,編譯程序段時產(chǎn)生的錯誤。此類錯誤是由于用戶未定義變量、遺漏關(guān)鍵字等原因造成的。這時,VB也將彈出對話框,提示出錯信息,如圖11.2所示。出錯的位置被高亮度顯示,同時VB停止編譯。這時,用戶必須單擊“確定”按鈕,關(guān)閉出錯對話框,然后對出錯行進行修改。圖11.2編譯錯誤

3.了解運行錯誤

運行錯誤是指VB在編譯通過后,運行代碼時發(fā)生的錯誤。這類錯誤往往是由于指令代碼執(zhí)行了非法操作而引起的,如類型不匹配、試圖打開一個不存在的文件等。

例如,屬性FontSize的類型為整型,若對其賦值的類型為字符串,則系統(tǒng)運行時將顯示如圖11.3所示的提示出錯信息。當(dāng)用戶單擊了“調(diào)試”按鈕后,進入中斷模式,光標(biāo)停留在引起出錯的位置,此時允許修改代碼。圖11.3運行錯誤

4.了解邏輯錯誤

程序運行后,如果得不到期望的結(jié)果,則說明程序存在邏輯錯誤。例如,運算符使用不正確、語句的次序不對、循環(huán)語句的起始值或終值不正確等。通常,邏輯錯誤不會產(chǎn)生錯誤提示信息,因此這類錯誤較難排除。這時就需要程序員仔細地閱讀和分析程序,并要有一定的調(diào)試程序的經(jīng)驗。任務(wù)11.2程序調(diào)試和排錯的方法

任務(wù)導(dǎo)入

為了更正程序中發(fā)生的不同錯誤,VB提供了廣泛的調(diào)試工具。一般的調(diào)試方法是采用設(shè)置斷點、插入觀察變量、逐行執(zhí)行和過程跟蹤等手段,以在調(diào)試窗口中顯示所關(guān)注的信息,或設(shè)置錯誤陷阱等。本任務(wù)將介紹程序調(diào)試和排錯的方法和

技巧。學(xué)習(xí)目標(biāo)

(1)會使用設(shè)置斷點、插入觀察變量、逐行執(zhí)行和過程跟蹤等手段排查錯誤程序。

(2)會使用調(diào)試窗口排查錯誤程序。

(3)了解設(shè)置錯誤陷阱排查錯誤程序的方法。任務(wù)實施

1.了解VB的三種模式

作為一個集編輯、編譯與運行于一體的集成環(huán)境,VB的工作狀態(tài)可分為三種模式:設(shè)計模式、運行模式和中斷模式。為了測試和調(diào)試應(yīng)用程序,用戶在任何時候都應(yīng)清楚地知道正處在何種模式下。

1)設(shè)計模式

在設(shè)計模式下,可以進行程序的界面設(shè)計、屬性設(shè)置、代碼編寫等,此時標(biāo)題欄顯示“設(shè)計”,如圖11.4所示。在此模式下既不能運行程序,也不能使用調(diào)試工具。圖11.4設(shè)計模式

2)運行模式

執(zhí)行“運行”菜單下的“啟動”命令,或按F5鍵,或單擊工具欄上的“啟動”按鈕,即可由設(shè)計模式進入運行模式。在此模式下,標(biāo)題欄顯示“運行”,如圖11.5所示。圖11.5運行模式

3)中斷模式

當(dāng)程序運行時,單擊“運行”菜單→“中斷”命令,或單擊工具欄上的“中斷”按鈕,即可進入中斷模式,如圖11.6所示。此時標(biāo)題欄顯示“break”。當(dāng)程序出現(xiàn)運行錯誤時,也可以進入中斷模式。圖11.6中斷模式

2.插入斷點和逐語句跟蹤

在調(diào)試程序時,通常會設(shè)置斷點來中斷程序的運行,然后逐語句跟蹤和檢查相關(guān)變量、屬性和表達式的值是否在預(yù)期的范圍內(nèi)。

可在中斷模式下或設(shè)計模式時設(shè)置或刪除斷點。當(dāng)應(yīng)用程序處于空閑時,也可在運行時設(shè)置或刪除斷點,按下F9鍵,如圖11.7所示,將在程序運行到斷點語句處(該語句未執(zhí)行)停下,進入中斷模式。在此模式下對所關(guān)心的變量、屬性、表達式的值都可以查看。圖11.7插入斷點和逐語句跟蹤在VB中提供了在中斷模式下直接查看某個變量的值的方法:把鼠標(biāo)指向所關(guān)心的變量處,稍停片刻,在鼠標(biāo)下方就會顯示該變量的值,如圖11.8所示。圖11.8顯示變量值

3.調(diào)試窗口

在中斷模式下,除了用鼠標(biāo)指向要觀察的變量以直接顯示其值外,還可以通過“立即”窗口、“監(jiān)視”窗口和“本地”窗口觀察有關(guān)變量的值??蓡螕簟耙晥D”菜單中的對應(yīng)命令打開這些

窗口。

1)“立即”窗口

“立即”窗口是所有調(diào)試窗口中使用最方便、最常用的窗口??梢栽诔绦虼a中利用Debug.Print方法把輸出送到“立即”窗口;也可以直接在該窗口使用Print語句或“?”顯示變量的值,如圖11.9所示。圖11.9立即窗口

2)“本地”窗口

“本地”窗口顯示當(dāng)前過程中所有變量的值。當(dāng)程序的執(zhí)行從一個過程切換到另一過程時,“本地”窗口的內(nèi)容會發(fā)生改變,它只反映當(dāng)前過程中可用的變量。圖11.10所示為“本地”窗口。圖11.10本地窗口

3)“監(jiān)視”窗口

“監(jiān)視”窗口可顯示當(dāng)前的監(jiān)視表達式。在此之前必須在設(shè)計階段,利用“調(diào)試”菜單的“添加監(jiān)視命令”或“快速監(jiān)視”命令來添加監(jiān)視表達式以及設(shè)置監(jiān)視類型。在運行時,監(jiān)視表達式顯示在“監(jiān)視”窗口,根據(jù)所設(shè)置的監(jiān)視類型進行相應(yīng)的顯示。圖11.11所示為“監(jiān)視”窗口。圖11.11監(jiān)視窗口

4.使用OnError語句設(shè)置錯誤陷阱

程序員無論多么細心地調(diào)試程序,都不可能絕對避免錯誤的發(fā)生。在VB中常采用錯誤陷阱的方法防止致命錯誤的發(fā)生。

設(shè)置錯誤陷阱可以使用OnError語句,其語法形式見表11-1。錯誤處理程序的設(shè)計一般可分為以下三步:

(1)使用OnError語句捕獲錯誤,并把程序流程轉(zhuǎn)向由標(biāo)號指示的錯誤處理程序段。

(2)編寫錯誤處理代碼,對所有可能預(yù)見的錯誤都做出相應(yīng)的安排。

(3)根據(jù)錯誤類型可使用Resume語句重新執(zhí)行出錯語句,或使用ResumeNext語句執(zhí)行出錯語句的下一條語句,并繼續(xù)運行程序。

【課堂演練】

【實例11-1】錯誤處理程序示例。建立一個10次的循環(huán),每次產(chǎn)生兩個0~9的隨機整數(shù),并輸出兩數(shù)的商。若出錯,則執(zhí)行錯誤處理語句,顯示信息如圖11.12所示;否則顯示正常信息,如圖11.13所示。圖11.12出錯結(jié)束的程序

圖11.13正常結(jié)束的程序

【實現(xiàn)步驟】

編寫代碼如下:

PrivateSubForm_Load()‘窗體裝入時執(zhí)行的代碼

Show

Randomize’初始化隨機數(shù)發(fā)生器

OnErrorGoToaa‘若出現(xiàn)錯誤(b=0),則執(zhí)行行標(biāo)號為aa的程序段

Fori=1To10

a=Int(Rnd*10):b=Int(Rnd*10)‘產(chǎn)生兩個0~9的隨機整數(shù)

Printa/b’輸出兩隨機數(shù)的商

Next

Print“程序正常結(jié)束!”

ExitSub‘退出過程,不執(zhí)行錯誤處理語句

aa:

Print“分母為零了,程序結(jié)束!”

EndSub

5.使用Err對象

Err對象中包含有關(guān)于運行時錯誤的信息。Err對象的屬性由錯誤的生成者來設(shè)置,這個生成者可以是VB系統(tǒng),可以是對象,也可以是程序設(shè)計員。

1)?Err對象的方法

在Err對象中使用Clear方法的語法格式為

Err.Clear通常,在處理錯誤之后使用Clear方法來清除Err對象,如在對OnErrorResumeNext使用拖延錯誤處理時就可使用Clear方法。每當(dāng)執(zhí)行下列語句時就會自動調(diào)用Clear方法:

任意類型的Resume語句。

ExitSub、ExitFunction、ExitProperty語句。

任何OnError語句。

【課堂演練】

【實例11-2】Clear方法使用示例。本示例使用Err對象的Clear方法將Err對象的數(shù)值屬性重新設(shè)置為零,并將其字符串屬性設(shè)置為零長度字符串。如果在代碼中省略Clear方法,則每完成一次循環(huán)便會顯示一次錯誤信息(發(fā)生錯誤之后),且不管程序中的計算結(jié)果是否有錯誤。

【實現(xiàn)步驟】

程序代碼如下:

DimResult(10)AsInteger‘聲明數(shù)組變量

’其元素容易溢出

Dimindx

OnErrorResumeNext

'將錯誤處理的方式設(shè)為“繼續(xù)下一行”

DoUntilindx=10

'下面計算若有錯誤發(fā)生,便顯示錯誤信息

Result(indx)=Rnd*indx*20000

IfErr.Number<>0Then

MsgBoxErr,,"ErrorGenerated:",Err.HelpFile,Err.HelpContext '彈出一個信息框

Err.Clear '清除Err對象的屬性

Else

indx=indx+1

EndIf

Loop

2)?Raise方法

若運行時發(fā)生錯誤,則Err對象的屬性被填入明確識別錯誤的信息以及處理這個錯誤所使用的信息。為了在代碼中生成運行時錯誤,應(yīng)使用Raise方法。

Raise方法的語法格式為

Err.RaiseNumber,Source,Description,HelpFile,HelpContext

各參數(shù)的含義見表11-2。在任意形式的Resume或OnError語句之后,以及在錯誤處理子程序內(nèi)的ExitSub、ExitFunction或ExitProperty語句之后,可將Err對象的屬性重新設(shè)置為零或長度為零的字符串("")??墒褂肅lear方法重新明確設(shè)置E

溫馨提示

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

評論

0/150

提交評論