資源描述:
《程序設(shè)計(jì) 錯(cuò)誤處理課件.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、VisualBasic.NET程序設(shè)計(jì)第9章錯(cuò)誤處理2021/7/311學(xué)習(xí)和實(shí)踐的目標(biāo)需求分析要求:發(fā)生任何錯(cuò)誤時(shí)要有明確的提示,對(duì)數(shù)據(jù)沒有影響,系統(tǒng)不會(huì)中止,不影響重新操作??煽啃允擒浖|(zhì)量的重要指標(biāo)。本章的目標(biāo)是使系統(tǒng)具有較強(qiáng)的容錯(cuò)和防錯(cuò)能力。2021/7/312實(shí)現(xiàn)目標(biāo)的知識(shí)點(diǎn)程序中的錯(cuò)誤類型VS.NET的調(diào)試工具Try...EndTry結(jié)構(gòu)化錯(cuò)誤處理程序防錯(cuò)編程2021/7/3139.1錯(cuò)誤處理的思路通過編譯發(fā)現(xiàn)語法錯(cuò)誤然后糾正。通過測試發(fā)現(xiàn)運(yùn)行或邏輯錯(cuò)誤通過調(diào)試找到錯(cuò)誤原因并定位對(duì)運(yùn)行錯(cuò)誤進(jìn)行容錯(cuò)或
2、防錯(cuò),對(duì)邏輯錯(cuò)誤要改變邏輯2021/7/3149.2錯(cuò)誤類型及其解決方法9.2.1三種錯(cuò)誤類型在VB程序中可能會(huì)發(fā)生3種類型的錯(cuò)誤:語法錯(cuò)誤、運(yùn)行錯(cuò)誤和邏輯錯(cuò)誤。語法錯(cuò)誤(或編譯錯(cuò)誤)語法錯(cuò)誤是一種編程錯(cuò)誤(例如屬性或關(guān)鍵字拼寫錯(cuò)誤),這種錯(cuò)誤違反了VB的語法規(guī)則。在開發(fā)人員輸入程序語句時(shí)VB能指出語法錯(cuò)誤,這時(shí)程序不能運(yùn)行,直到所有的語法錯(cuò)誤被更正為止。2021/7/3159.2錯(cuò)誤類型及其解決方法9.2.1三種錯(cuò)誤類型運(yùn)行錯(cuò)誤運(yùn)行錯(cuò)誤是在程序運(yùn)行期間會(huì)導(dǎo)致程序意外終止的錯(cuò)誤。當(dāng)外部事件或未被發(fā)現(xiàn)的語法錯(cuò)誤強(qiáng)
3、制程序運(yùn)行中斷時(shí),就會(huì)發(fā)生運(yùn)行錯(cuò)誤,也稱作為異常。例如:試圖創(chuàng)建一個(gè)并不存在的數(shù)據(jù)庫文件的連接,程序就會(huì)產(chǎn)生運(yùn)行錯(cuò)誤。邏輯錯(cuò)誤邏輯錯(cuò)誤是一種人為的編程錯(cuò)誤,即不合理的思維。這種錯(cuò)誤會(huì)導(dǎo)致程序產(chǎn)生不期望的結(jié)果。2021/7/3169.2錯(cuò)誤類型及其解決方法9.2.2解決錯(cuò)誤方法發(fā)生語法錯(cuò)誤時(shí),在代碼編輯器中,VS.NET自動(dòng)用藍(lán)色鋸齒狀的下劃線標(biāo)出語法有錯(cuò)誤的語句,將鼠標(biāo)指針停留在該語句上面一段時(shí)間就能獲得關(guān)于錯(cuò)誤的更多信息。編譯錯(cuò)誤時(shí)會(huì)自動(dòng)打開錯(cuò)誤列表窗,只要在其中的某個(gè)錯(cuò)誤上雙擊一下就可以定位至錯(cuò)誤的位置20
4、21/7/3179.2錯(cuò)誤類型及其解決方法9.2.2解決錯(cuò)誤方法運(yùn)行錯(cuò)誤需要有更完整的解決方案——使用結(jié)構(gòu)化錯(cuò)誤處理程序容錯(cuò)或防錯(cuò)編程。邏輯錯(cuò)誤的解決比較困難,關(guān)鍵是對(duì)問題的理解和思維。無論是運(yùn)行錯(cuò)誤還是邏輯錯(cuò)誤,找到錯(cuò)誤的原因和定位是首要任務(wù)。VS.NET的調(diào)試器是一個(gè)有效的工具??梢栽谥袛嗄J较赂櫿Z句的執(zhí)行過程,通過查看相關(guān)變量或?qū)傩灾档淖兓瘉磉M(jìn)行調(diào)試,從而找到問題所在。2021/7/3189.3使用中斷模式調(diào)試程序可以在狀態(tài)下(Debug)使用調(diào)試菜單和調(diào)試工具欄的命令進(jìn)行調(diào)試。使用中斷模式調(diào)試程序,不
5、僅可以找錯(cuò)、糾錯(cuò),而且通過逐步執(zhí)行方式閱讀代碼,理解程序的執(zhí)行流程。下面以學(xué)生成績管理系統(tǒng)為例介紹中斷模式調(diào)試VB.NET程序的方法。2021/7/3199.3使用中斷模式調(diào)試程序9.3.1設(shè)置斷點(diǎn)并逐條執(zhí)行調(diào)試程序若要對(duì)學(xué)生成績管理系統(tǒng)中學(xué)生基本信息進(jìn)行“添加”或“修改”操作,必然會(huì)調(diào)用“frm增改”類中的ShowDialog()方法,現(xiàn)在來調(diào)試該方法代碼,具體步驟如下:1.啟動(dòng)學(xué)生成績管理系統(tǒng)項(xiàng)目。2.把“frm增改.vb”文件代碼顯示在代碼編輯窗口中。3.將鼠標(biāo)指針移到頁邊距指示欄(緊靠代碼編輯器窗口左邊
6、緣之外的灰色條)上,在與ShowDialog()方法中的“Me.dgv區(qū)域=dgv區(qū)域”語句平行處,單擊該指示欄設(shè)置一個(gè)斷點(diǎn)。2021/7/31109.3使用中斷模式調(diào)試程序9.3.1設(shè)置斷點(diǎn)并逐條執(zhí)行調(diào)試程序4.單擊調(diào)試工具上的【啟動(dòng)】按鈕再次運(yùn)行程序。此時(shí)生成的學(xué)生成績管理系統(tǒng)主窗口與正常啟動(dòng)一樣,繼續(xù)進(jìn)行調(diào)試。5.進(jìn)入系統(tǒng)主控界面后,選擇菜單【基本數(shù)據(jù)】中的【學(xué)生】,并在工具欄中單擊【添加】按鈕,即將添加學(xué)生基本信息。6.在代碼編輯器中,將鼠標(biāo)指針停留在“Me.dgv區(qū)域”類變量處。7.單擊調(diào)試工具欄上的
7、【逐過程】按鈕執(zhí)行下一條程序語句。8.繼續(xù)單擊【逐過程】按鈕,查看If語句中條件的值和執(zhí)行條件分支過程。9.單擊調(diào)試工具欄上的【停止調(diào)試】按鈕終止調(diào)試。2021/7/31119.3使用中斷模式調(diào)試程序9.3.2使用監(jiān)視窗查看變量【監(jiān)視】窗口是一個(gè)特殊的VS.NET工具,只要程序處于中斷模式,就可以利用它來跟蹤重要的變量和屬性。在VS.NET中,可以打開多個(gè)監(jiān)視窗口。這些窗口在【調(diào)試】
8、【窗口】
9、【監(jiān)視】子菜單上分別編號(hào)為【監(jiān)視1】和【監(jiān)視n】。還可以向【監(jiān)視】窗中添加表達(dá)式。2021/7/31129.3使用中斷
10、模式調(diào)試程序9.3.3使用命令窗口假設(shè)在學(xué)生成績管理系統(tǒng)的學(xué)生基本信息數(shù)據(jù)的“添加”代碼調(diào)試過程中,同時(shí)想調(diào)試“修改”操作代碼,只需在【命令窗口】的立即模式下輸入“bAdd=False”即可。2021/7/31139.4運(yùn)行錯(cuò)誤處理在學(xué)生成績管理系統(tǒng)中的“frm主控”類中的frm主控_Load()方法,現(xiàn)把其中的數(shù)據(jù)庫文件名“scores.mdb”改成“score.mdb”,然后運(yùn)行程