




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、處理錯誤Eliminare errori1運(yùn)行時錯誤應(yīng)用程序執(zhí)行時出現(xiàn)的錯誤往往是由一些不可預(yù)見的動作引發(fā)的。這些錯誤都稱為運(yùn)行時錯誤。通過使用錯誤處理程序用戶可以避免運(yùn)行時錯誤,給用戶提供有用信息,并正確地退出應(yīng)用程序。如果程序在Visual Basic開發(fā)環(huán)境中運(yùn)行時出現(xiàn)運(yùn)行時錯誤,會有消息告知:進(jìn)入調(diào)試模式、尋求幫助或者選擇結(jié)束應(yīng)用程序。如果應(yīng)用程序作為可執(zhí)行文件執(zhí)行時出現(xiàn)運(yùn)行時錯誤,Visual Basic則顯示一則錯誤消息,應(yīng)用程序也就此結(jié)束。要避免運(yùn)行時錯誤,可以編寫錯誤處理程序,修正出錯處,提示用戶正確操作,或者在程序結(jié)束前保存數(shù)據(jù)。2錯誤處理介紹錯誤處理程序是一個例程,它捕獲應(yīng)
2、用程序中出現(xiàn)的錯誤,并對錯誤做出反應(yīng)。如果預(yù)料到一個過程可能發(fā)生運(yùn)行時錯誤,就應(yīng)該在過程中添加錯誤處理程序。在錯誤發(fā)生時,通過告知應(yīng)用程序轉(zhuǎn)向哪段程序可以設(shè)定或啟用某個錯誤捕獲。Visual Basic在執(zhí)行On Error語句時會啟用錯誤捕獲。包含它的過程處于活動狀態(tài)時,該錯誤捕獲始終有效。在給定過程中一次只能啟用一個錯誤捕獲。另外,錯誤捕獲必須放在本地過程中。不能用On Error語句把應(yīng)用程序的執(zhí)行引向另一個過程。如果要使錯誤捕獲無效,可使用On Error Go To語句。編寫錯誤處理例程的第一步是添加一個行號,標(biāo)志著錯誤處理程序的開始。行號的名稱應(yīng)是描述性的,后面必須跟一個冒號。常規(guī)
3、錯誤處理程序放在過程結(jié)束處,緊跟著Exit Sub或Exit Function的行號之后。這樣,在沒有錯誤發(fā)生時,過程就不會執(zhí)行錯誤處理程序。使用Resume或Resume Next語句就可以退出錯誤處理例程。Resume語句會執(zhí)行引發(fā)錯誤的那句代碼,Resume Next語句執(zhí)行引發(fā)錯誤代碼的下一句代碼。如果錯誤處理程序能夠修正錯誤,則使用Resume語句,否則就使用Resume Next語句。3使錯誤捕獲有效借助于On Error語句,可以測試可捕獲錯誤并對它做出響應(yīng)。如果出現(xiàn)運(yùn)行時錯誤,則可強(qiáng)制應(yīng)用程序跳轉(zhuǎn)到由On Error Go To語句指定的標(biāo)記處。當(dāng)Visual Basic執(zhí)行O
4、n Error語句時激活錯誤捕獲,On Error語句指定錯誤處理程序。當(dāng)包含錯誤捕獲的過程是活動的時候,錯誤捕獲始終是激活的,也就是說,直到這個過程執(zhí)行Exit或End語句時,錯誤捕獲才停止。盡管在任一時刻,任一過程中只能激活一個錯誤捕獲,但可建立幾個供選擇的錯誤捕獲并在不同的時刻激活不同的錯誤捕獲。借助于On Error Go To 0也能停用某一個錯誤捕獲。為設(shè)置一個跳轉(zhuǎn)到錯誤處理例程的錯誤捕獲,可用On Error Go To 行標(biāo)簽語句。4編寫錯誤處理例程編寫錯誤處理例程的第一步是添加行號,標(biāo)志著錯誤處理例程開始。行號應(yīng)該有一個具有描述性的名稱,其后必須加冒號。把錯誤處理代碼放置在過
5、程末端,這個過程在緊靠行號前方處具有Exit語句。如果沒有出現(xiàn)錯誤,過程可避免執(zhí)行錯誤處理代碼。錯誤處理例程包含實(shí)際處理錯誤的代碼,通常以Case或IfThenElse判定結(jié)構(gòu)的形式出現(xiàn)。需要確定可能會發(fā)生什么錯誤并對每種錯誤提供操作方法。為了處理所有意想不到的錯誤,應(yīng)使用Else或Case Else語句提供選項。Err對象的Number屬性包含數(shù)值代碼,代碼代表最新的運(yùn)行時錯誤。借助Err對象與Select Case或IfThenElse語句的組合,可對出現(xiàn)的任何錯誤采取針對性的操作。5退出錯誤處理例程設(shè)定錯誤捕獲后,如果不是過程執(zhí)行結(jié)束,或錯誤捕獲失效,否則錯誤捕獲始終是有效的。使用Res
6、ume語句可以指定應(yīng)用程序在處理完錯誤后恢復(fù)正常執(zhí)行的位置。語句On Error Resume Next可以使應(yīng)用程序在執(zhí)行時忽略錯誤。如果出現(xiàn)運(yùn)行時錯誤,程序繼續(xù)執(zhí)行下一行。這種形式的On Error語句用于內(nèi)聯(lián)錯誤。6在指定行恢復(fù)執(zhí)行Resume Next也可用于發(fā)生在循環(huán)內(nèi)的錯誤,此時,需要重啟動操作。還可使用Resume 行號,它把控件返回到指定的行號。7屬性Err對象包含剛被引發(fā)的錯誤的信息,使用Err對象的屬性和方法可以檢查發(fā)生了什么錯誤,清除錯誤值、或引發(fā)一個錯誤。Number屬性是一個整數(shù),指示最新發(fā)生的錯誤。Description屬性是一個字符串,含有對錯誤的描述。Sourc
7、e屬性包含產(chǎn)生錯誤的應(yīng)用程序的名稱。在使用Automation時,這個屬性會很有用。如果用戶在訪問Excel 2007時,Excel 2007產(chǎn)生了錯誤,Excel 2007會把Err. Number設(shè)置成正確的錯誤代碼,把Err. Source設(shè)成Excel. Application。8方法Clear方法清除錯誤,它把Err. Number的值復(fù)置為零。這種方法主要用于處理內(nèi)聯(lián)錯誤。有時,用戶可能不想設(shè)置錯誤處理程序,讓應(yīng)用程序在錯誤發(fā)生時跳轉(zhuǎn)到這個程序,而是想在內(nèi)聯(lián)里處理某個錯誤。在程序中添加On Error Resume Next語句,在每個可能含有錯誤的語句后檢測Err. Number
8、的值。用Err. Clear重置錯誤編號。處理內(nèi)聯(lián)錯誤的程序代碼中不包含標(biāo)號或Resume語句。使用On Error Resume Next時要特別小心,用戶的錯誤處理程序可能會忽略用戶沒有意識到的錯誤。Raise方法引發(fā)一個錯誤。如果想避免復(fù)制錯誤捕獲程序,可以用Raise方法把錯誤傳回調(diào)用過程,或檢測錯誤處理程序。Visual Basic有足夠的號碼對應(yīng)自己的錯誤,且有富余。如果用戶想生成并捕獲自己的錯誤,可以使用32767以下的數(shù)字。9搜索調(diào)用列表一個事件過程調(diào)用過程A,過程A調(diào)用過程B,過程B調(diào)用過程C,當(dāng)執(zhí)行過程C時,其它過程掛起。如果過程C中出現(xiàn)錯誤,而且這個過程沒有激活的錯誤處理
9、程序,則Visual Basic在調(diào)用列表中沿掛起的過程向后搜索,首先搜索過程B,過程A,然后是初始事件過程,并執(zhí)行查找到的第一個激活的錯誤處理程序。如果在調(diào)用列表中的所有地方都沒有遇到激活的錯誤處理程序,則顯示默認(rèn)的意外錯誤信息并終止執(zhí)行。如果Visual Basic查找到一個激活的錯誤處理例程,執(zhí)行會在這個例程中繼續(xù)下去。如果在錯誤處理例程中執(zhí)行Resume或Resume Next語句,執(zhí)行也繼續(xù)下去。如果錯誤處理程序的錯誤范圍不包括實(shí)際產(chǎn)生的錯誤,則在具有激活的錯誤處理程序的過程內(nèi)會產(chǎn)生意想不到的錯誤。這時過程可能會陷入死循環(huán),特別是如果錯誤處理程序還執(zhí)行Resume語句時,情況更是如此
10、。為防止這種情況出現(xiàn),在程序內(nèi)的Case Else語句中使用Err對象的Raise方法。這實(shí)際上是在錯誤處理程序內(nèi)生成一條錯誤,從而迫使Visual Basic通過調(diào)用列表搜索能夠處理錯誤的處理程序。10把錯誤分配到不同的處理程序通過調(diào)用列表后退搜索的效果很難預(yù)測,因為這要取決于在成功處理錯誤的處理程序中是否執(zhí)行了Resume或Resume Next語句。Resume把控件返回到剛執(zhí)行過的過程調(diào)用,而該過程包含錯誤處理程序。Resume Next則把控件返回到最近一次執(zhí)行過的過程調(diào)用之后的任何語句之處,而且調(diào)用的過程包含錯誤處理程序。11復(fù)雜錯誤處理當(dāng)用幾個模塊編寫大型Visual Basic
11、應(yīng)用程序時,錯誤處理代碼可能相當(dāng)復(fù)雜。調(diào)試代碼時,對于在程序中沒有代碼處理具體錯誤的情況,應(yīng)該在所有錯誤處理程序中使用Err對象的Raise方法重新生成錯誤。由此,應(yīng)用程序就可按照調(diào)用列表,試著把其它錯誤處理例程中的錯誤加以改正。如果發(fā)生一個代碼未處理的錯誤,則也要確保Visual Basic顯示錯誤信息。在測試代碼時,這一技術(shù)有助于發(fā)現(xiàn)難以處理的錯誤。但是,對于獨(dú)立方式的可執(zhí)行文件,應(yīng)該切記:如果執(zhí)行Raise方法,而且無任何其它過程捕獲錯誤,則應(yīng)用程序?qū)⒘⒓粗袛鄨?zhí)行,且沒有任何Query Unload或Unload事件發(fā)生。在處理錯誤后,如果需要明確地清除Err對象,則可以用Clear方法
12、。當(dāng)使用具有On Error Resume Next的聯(lián)機(jī)錯誤處理時,這種做法是非常必要的。Visual Basic無論何時執(zhí)行任何類型的Resume語句、Exit語句或者其它On Error語句,都可自動調(diào)用Clear方法。如果不希望另一個過程在調(diào)用列表中的捕獲錯誤,則可用Stop語句強(qiáng)制終止代碼。在開發(fā)環(huán)境中優(yōu)化代碼時,可以用Stop檢查錯誤的上下文。編寫一個故障保險的錯誤處理過程,所有錯誤處理程序都可調(diào)用它作為最后手段,解決不能處理的錯誤。故障保險的過程能夠按卸載窗體和保存數(shù)據(jù)的順序中斷應(yīng)用程序。12具有完備的錯誤處理程序的函數(shù)只要有可能,就應(yīng)該把自己的代碼編制成標(biāo)準(zhǔn)函數(shù),使它包含完整的
13、錯誤處理程序。然后在程序中調(diào)用這個函數(shù)。函數(shù)應(yīng)返回一個值,表明是否成功處理了發(fā)生的錯誤。13集中處理錯誤的程序通過創(chuàng)建錯誤處理主函數(shù),可以把應(yīng)用程序中那些主要的錯誤處理集中起來,并由這個主函數(shù)指示過程如何處理錯誤。然而,由于Resume語句只能使用在含有On Error語句的過程中,所以如果要求過程能處理錯誤,則過程中必須含有錯誤處理程序。在應(yīng)用程序中添加錯誤處理代碼時,很快就會發(fā)現(xiàn)有可能反復(fù)處理的是相同的錯誤,那么編寫幾個可供錯誤處理代碼調(diào)用來處理公共錯誤情況的過程,就可減少代碼的數(shù)量。14Visual Basic中的通用錯誤捕獲選項Visual Basic開發(fā)環(huán)境下有三種通用錯誤捕獲選項:發(fā)生錯誤時中斷、在類模塊內(nèi)中斷和遇到未處理的錯誤時中斷。在【工具】菜單中單擊【選項】,在【選項】對話框中單擊【通用】選項卡,在【錯誤捕獲】單選框中選
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 排水涵管施工方案
- 珠江啤酒公司財務(wù)管理模式的改進(jìn)方案5400字
- 粉刷警示柱施工方案
- 照明專項施工方案
- 廣東鍋爐管道防腐施工方案
- 削竹式隧道明洞施工方案
- 灰土基層施工方案
- 鋁合金欄桿施工方案
- 拆除道牙和生態(tài)磚施工方案
- 室外壁掛式充電樁施工方案
- 強(qiáng)直性脊柱炎患者功能鍛煉組圖
- 新課程標(biāo)準(zhǔn)2022版綜合實(shí)踐
- 40篇英語短文搞定高考3500個單詞
- 【企業(yè)會計信息化存在的問題及解決對策開題報告】
- 痘痘肌膚的各種類型
- 衛(wèi)生事業(yè)管理 第十八章 衛(wèi)生應(yīng)急管理
- 皮膚性病學(xué) 14皮炎和濕疹
- GB/T 3403.2-2013塑料粉狀脲-甲醛和脲/三聚氰胺-甲醛模塑料(UF-和UF/MF-PMCs)第2部分:試樣制備和性能測定
- GB/T 21835-2008焊接鋼管尺寸及單位長度重量
- 知識管理控制程序
- 積極情緒的力量
評論
0/150
提交評論