1. 程式人生 > >VB的靈魂—錯誤除錯

VB的靈魂—錯誤除錯

這是在CSDN上寫的第一篇文章,心情有點小激動和小緊張,感覺一定要寫特別重要的東西,仔細想了想,到底什麼才是特別重要的呢??思來想去,只有錯誤是不斷髮生,同時我們也是不斷在改正,錯誤除錯貫穿學習VB的整個過程中,也許碰到錯誤後我們會改,但是不一定能說出它到底是什麼錯誤了。所以,在這裡我對VB做一個全域性的錯誤總結。可能總結的不太好,希望大神們多提建議。接下來分三個部分講如何除錯

      一、錯誤的種類 

     首先將錯誤的種類分為三種:

     1、語法錯誤

     語法錯誤包括: 拼寫錯誤、缺少操作物件、不符合語法規則等錯誤都屬於語法錯誤。

     

     這類都屬於比較簡單的,一張圖估計能懂所有。

     2、執行錯誤

      執行錯誤是指在執行程式的時候發生的錯誤。這些錯誤在編寫的過程中,因為它們符合語法規則,所以不會被識別出來,也不會在編譯的時候被發現。它們往往是由於進行了某種錯誤的操作造成的。

     3、邏輯錯誤

     邏輯錯誤指的是程式可以執行,但就是得不到使用者所希望的結果。這並不是程式語句的錯誤,而是由於程式設計時本身存在的邏輯缺陷而導致的。如定義了錯誤的變數型別,或程式中出現了不正確的迴圈次數或死迴圈等等。
     大多數邏輯錯誤不容易發覺是在哪一條語句發生的,而且錯誤產生的原因與產生錯誤結果的語句之間可能隔有很多語句。因此,對於邏輯錯誤一般要使用單步執行和監視的方法來查詢錯誤的根源。

    二、錯誤處理

     1  錯誤捕獲 

      自己理解的是vb系統告訴你那裡錯了。

     2  啟用錯誤捕獲功能

      說到這裡必須說說VB中特別重要的ON Error語句了。它也包括三類,這裡說最常用的兩種。

       On Error Goto 行號

       此語句的功能是啟用錯誤捕獲,並將錯誤處理程式指定為從“行號”位置開始的程式段。

       這是一個典型的錯誤處理過程。首先,我們可以預料到在此過程中有可能出現執行時錯誤,因此,在過程開始時,我們使用On Error GoTo gperror啟用錯誤捕獲功能,並指定從行號“gperror”開始的程式段為錯誤處理程式(注意,行號後面要加一個冒號,但在語句On Error GoTo gperror中不加冒號)。這樣,當程式執行到語句某段程式碼併發生錯誤時,將執行行號“error”後面的語句。如果不發生錯誤,當執行到語句“Exit Sub”時,將退出過程。在過程退出時,錯誤捕獲功能就自動被取消了。

     On Error Resume next

此語句的功能是忽略錯誤,繼續往下執行。使用這種格式的語句,它可以啟用錯誤捕獲功能,但並不指定錯誤處理程式,當錯誤發生時,不做任何處理,緊接著從發生錯誤語句之後的語句繼續執行

       3  編制錯誤處理程式 

       這裡說一下,從錯誤處理程式中返回時,我們使用Resume語句。根據不同的返回位置,Resume語句可分為3種:

     Resume 0:返回到產生錯誤的語句重新執行。“0”可以省略。 
     Resume Next:跳過產生錯誤的語句,返回到它的下一行語句繼續執行。 
     Resume 行號:返回到行號指定的位置繼續執行。

     在學生資訊管理系統中有此語句的應用

      

   三、程式碼除錯

    個人感覺程式碼除錯非常的重要,如果學不會除錯,那就算不上學會了VB

                  首先, 下面來看看編輯的選單欄

    

    ↑↑上面是快速資訊選取,可以通過選中文字點選快速資訊顯示選中的引數資訊

     1、逐語句除錯

     這個通過按F8來實現,在敲學生資訊管理系統的時候,逐語句用到的特別的多,我們可以通過逐語句除錯找到很多錯誤。同時可以看到錯誤到底出現在哪裡,同時我們可以結合斷點除錯,一起除錯。下面舉個例子。

    

       當執行到這裡的時候,我們就會看到txtusername被賦值成了1,說明這裡是沒有問題的,以後的每句話都會給出相應的變數,我們可以通過是否傳值來判斷。

      2、斷點除錯

斷點除錯是指自己在程式的某一行設定一個斷點,除錯時,程式執行到這一行就會停住,然後你可以一步一步往下除錯,除錯過程中可以看各個變數當前的值,出錯的話,除錯到出錯的程式碼行即顯示錯誤,停下

        可以按F9設定斷點,或者在程式碼視窗的左側。同時逐語句除錯的時候可以直接跳到斷點哪裡,這也就意味著可以節省很多時間。

       除錯錯誤基本就到這裡吧。本來想的挺好,但是表達出來的確少了很多東西。如果哪裡有錯誤大神們可以指點,如果不懂的話咱們可以交流。