第二十八课: Visual Basic 的错误处理

第二十八课: Visual Basic 的错误处理

 

错误处理是在Visual Basic编程里的必要程序,因为它可以使错误程序得到妥当的处理。无错误的程序可以高效及平稳的运行,用户不必面对如程序崩溃或系统死机的种种问题。

错误的发生经常是由于用户的输入不正确。例如,用户如果让计算机计算某个数字除以零的商数,这肯定会导致系统错误。另一个例子是,用户可能输入文本(字符串)进入一个人只处理数值的文本框,计算机将不能够执行算术计算的文本,因此会产生一个错误。这些错误被称为同步误差。

所以一个好的程序员应该警惕
可能引发错误方案的部分,他应该编写错误处理代码,以帮助管理用户的错误输入。书写错误处理代码应该被认为是一个Visual Basic程序员的良好做法,所以不要因为要快速完成而省略了错误处理代码的程序。但是,一个程序不应该有太多的错误处理程序代码,因为它为将来来程序员在创建维护和故障排除程序方面造成麻烦。

28.1 编写错误处理代码

现在我们将学习如何编写
Visual Basic错误处理代码。错误处理语法如下:

            On Error GoTo program_label

其中program_label是
用于处理由用户犯下的错误一段代码。一旦发现错误,程序将跳转到错误处理program_label部分。

输出窗口

 

说明:


在这个例子中,你设计一个如上图所示的介面。把第一个本文框 TextBox1  命名为 Txt_FirstNumber,把 第二个本文框TextBox1 命名为TextBox Txt_SecondNumber

插入一个命令按钮,标签为计算它。再插入一个标签,并将其命名为Lbl_Answer它来显示答案。如果用户输入0 进入如上所示第二个TextBox,程序将跳转到标签error_handler,以及所执行的程序。这将在 Txt_Answer  标签显示出错误和在Lbl_ErrorMsg 标签错误的信息。


请注意
Exit Sub 关键字 ,它可以防止用户在没有输入进第二个TextBox程序代码时执行error_handler

最后,在信息出现错误后,用户将会点击文本框。当发生这种情况,该错误信息将从答案标签和错误信息的标签消失。这是通过使用GotFocus事件而达致,如代码所示。

范例28.1:除于零的错误

Private Sub CmdCalculate_Click()

Dim firstNum, secondNum As Double
firstNum = Txt_FirstNumber.Text
secondNum = Txt_SecondNumber.Text
On Error GoTo error_handler
Lbl_Answer.Caption = firstNum / secondNum
Exit Sub        'To prevent error handling even the inputs are valid

error_handler:
Lbl_Answer.Caption = "Error"
Lbl_ErrorMsg.Visible = True
Lbl_ErrorMsg.Caption = " You attempt to divide a number by zero!Try again!"

End Sub

Private Sub Txt_FirstNumber_GotFocus()

Lbl_ErrorMsg.Visible = False

End Sub

Private Sub Txt_SecondNumber_GotFocus()

Lbl_ErrorMsg.Visible = False

End Sub
 


 

 

范例28.2:嵌套错误处理过程

参照范例28.1,我们需要考虑其他可能会由用户造成的错误,如输入非数字。因此,我们需要编写处理此错误代码。应该是第一个处理用户在文本框错误的输入。标签和错误处理这个错误error_handler1应放在error_handler2标签后面。这意味着第二个错误处理程序是在一个错误处理程序嵌套。请注意,你必须把Exit Sub 放在第二个错误处理程序里,以防再次执行第一个错误处理程序。该代码如下:

 

Private Sub CmdCalculate_Click()

Dim firstNum, secondNum As Double
On Error GoTo error_handler1
firstNum = Txt_FirstNumber.Text
secondNum = Txt_SecondNumber.Text
On Error GoTo error_handler2
Lbl_Answer.Caption = firstNum / secondNum
Exit Sub 'To prevent errror handling even the inputs are valid

error_handler2:
Lbl_Answer.Caption = "Error"
Lbl_ErrorMsg.Visible = True
Lbl_ErrorMsg.Caption = " You attempt to divide a number by zero!Try again!"
Exit Sub
error_handler1:
Lbl_Answer.Caption = "Error"
Lbl_ErrorMsg.Visible = True
Lbl_ErrorMsg.Caption = " You are not entering a number! Try again!"

End Sub

Private Sub Txt_FirstNumber_GotFocus()

Lbl_ErrorMsg.Visible = False

End Sub


Private Sub Txt_SecondNumber_GotFocus()

Lbl_ErrorMsg.Visible = False

End Sub
 

 

 

 

 

输出窗口

 

 

 

 

 

[上一课][返回主页][下一课]