英文VB教程 簡體Visual Basic教程 繁體Visual Basic教程

第34課: Visual Basic 的誤差(Error)處理


誤差處理是在Visual Basic編程裡的必要的程序,因為它可以使誤差得到妥當的處理。無誤差的程序可以高效及平穩的運行,用戶不必面對如程序崩潰或系統死機等種種問題。

誤差的發生經常是由於用戶輸入不正確的資訊所造成。例如,用戶如果讓計算機計算某個數字除以零的商數,這肯定會導致系統誤差。另一個例子是,用戶可能輸入文本(字符串)進入一個人只處理數值的文本框,計算機將不能夠執行數學計算的文本,因此會產生誤差。這些誤差被稱為同步誤差。

所以一個好的程序員應該注意可能引發誤差的程序。為了處理誤差,他應該編寫誤差處理代碼,以幫助管理用戶的誤差輸入。書寫誤差處理代碼應該是每一個Visual Basic程序員應該做的事,所以不要因為要快速完成而省略了誤差處理代碼的程序。但是,一個程序也不應該有太多的誤差處理程序代碼,因為它為將來來程序員在創建維護和故障排除程序方面造成麻煩。

 

28.1 編寫 誤差處理代碼

現在我們將學習如何編寫Visual?Basic的誤差處理代碼。誤差處理的語法如下:

On Error GoTo program_label

其中program_label是用於處理由用戶犯下的誤差一段代碼。一旦發現誤差,程序將跳轉到誤差處理program_label部分。

輸出界面

 

說明:

在這個例子中,你設計一個如上圖所示的介面。把第一個本文框 TextBox1 命名為 TxtNumber1,把 第二個本文框TextBox1 命名為TextBox TxtNumber2。

插入一個命令按鈕,標籤為計算它。再插入一個標籤,並將其命名為LblAnswer它來顯示答案。如果用戶輸入0 進入如上所示的第二個TextBox,程序將跳轉到標籤error_handler,以及所執行的程序。這將在 LblAnswer?標籤上顯示出‘誤差’字眼和在LblErrorMsg 標籤上顯示提示。

請注意 Exit Sub 關鍵字 ,它可以防止在用戶在沒有輸入零進第二個文本框程序代碼時執行error_handler 。

最后,在信息出現誤差后,用戶將會點擊文本框。當發生這種情況,該誤差信息將從答案標籤和誤差信息的標籤消失。這是通過使用GotFocus事件而達致,如代碼所示。

 

範例28.1:除於零的誤差

Private Sub CmdCalculate_Click()

Dim 數字1, 數字2 As Double
數字1 = txtNumber1.Text
數字2 = txtNumber2.Text
On Error GoTo error_handler
LblAnswer.Caption = 數字1 / 數字2
Exit Sub

error_handler:
LblAnswer.Caption = "誤差"
LblMessage.Visible = True
LblErrorMsg.Caption = " 數字不能除於零!再輸入另一個數字"

End Sub

範例28.2:嵌套(Nested)誤差處理過程

參照范例28.1,我們需要考慮其他可能會由用戶造成的誤差,如輸入非數字。因此,我們需要編寫處理此誤差的代碼。它應該是第一個處理用戶在文本框誤差的輸入。標籤和誤差處理這個誤差error_handler1應放在error_handler2標籤后面。這意味著第二個誤差處理程序是在一個誤差處理程序嵌套。請注意,你必須把Exit Sub 放在第二個誤差處理程序裡,以防止它再次執行第一個誤差處理程序。該代碼如下:

Private Sub cmdCalculate_Click()
Dim 數字1, 數字2 As Variant
數字1 = txtNumber1.Text
數字2 = txtNumber2.Text
On Error GoTo error_handler2
LblAnswer.Caption = 數字1 / 數字2
Exit Sub

error_handler1:
LblAnswer.Caption = "誤差"
LblMessage.Visible = True
LblMessage.Caption = " 數字不能除於零!再輸入另一个數字"
error_handler2:
LblAnswer.Caption = "誤差"
LblMessage.Visible = True
LblMessage.Caption = " 您輸入的不是數字! 再試一次!"

End Sub

輸出界面





版权所有©2008 Dr.Liew Voon Kiong。保留所有权利 。联系我们: VB面子书

[Privacy Policy]