误差处理在Visual Basic编程中异常重要,因为无误差的程序可以高效及平稳的运行,用户不必面对如程序崩溃或系统死机等种种问题。
误差的发生经常是由于用户输入不正确的资讯所造成。例如,用户如果让计算机计算某个数字除以零的商数,这肯定会导致系统误差。另一个例子是,用户可能输入文本(字符串)进入一个人只处理数值的文本框,计算机将不能够执行数学计算的文本,因此会产生误差。这些误差被称为同步误差。 所以一个好的程序员应该注意
可能引发误差的程序。为了处理误差,他应该编写误差处理代码,以帮助管理用户的误差输入。书写误差处理代码应该是每一个Visual Basic程序员应该做的事,所以不要因
为要快速完成而省略了误差处理代码的程序。但是,一个程序也不应该有太多的误差处理程序代码,因为它为将来来程序员在创建维护和故障排除程序方面造成麻烦。
现在我们将学习如何编写Visual Basic 误差处理的代码。 语法如下: On Error GoTo program_label 其中program_label是 用于处理用户犯下误差时的一段代码。一旦发现误差,程序将跳转到误差处理program_label部分。 在这个例子中,你设计一个如上图所示的介面。把第一个本文框 TextBox1 命名为 TxtNumber1,把 第二个本文框TextBox1 命名为 TxtNumber2。
插入一个命令按钮,标签为计算。再插入一个标签,并将其命名为LblAnswer用来显示答案。如果用户在第二个TextBox输入0,程序将跳转到标签error_handler,以执行误差的程序。LblAnswer 标签上将显示出‘误差’字眼和在LblErrorMsg 标签上显示提示。 Exit Sub 它是为了防止程序执行error_handler码即使用户未在第二文本输入0 。
最后,在信息出现误差后,用户将会点击文本框。当发生这种情况,该误差信息将从答案标签和误差信息的标签消失。这是通过使用GotFocus事件而达致,如代码所示。 Private Sub CmdCalculate_Click() Dim 数目1, 数目2 As Double End Sub 参照范例28.1,我们需要考虑其他可能会由用户造成的误差,如输入非数字。因此,我们需要编写处理此误差的代码。它应该是第一个处理用户在文本框误差的输入。标签和误差处理这个误差error_handler1应放在error_handler2标签后面。
这意味着第二个误差处理程序是在一个误差处理程序嵌套。请注意,你必须把Exit Sub 放在第二个误差处理程序中,以防止它再次执行第一个误差处理程序。该代码如下: Private Sub cmdCalculate_Click() End Sub
28.1 编写误差处理代码
图34.1输出界面
范例28.1:除于零的误差
数目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 = " 数目不能除于零!再输入另一个数目"范例28.2:嵌套(Nested)误差处理过程
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 = " 您输入的不是数字! 再试一次!"
图34.2 运行界面