课件第9章 程序调试.pptVIP

  • 2
  • 0
  • 约8.74千字
  • 约 45页
  • 2018-01-03 发布于湖北
  • 举报
课件第9章 程序调试

9.3.1 设置错误捕获 (3) 3. On Error GoTo 0 语句 取消错误捕获。对当前过程中的错误捕获由On Error语句启动,当退出本过程时,自动取消错误捕获。可以使用 On Error GoTo 0 语句取消对当前过程中的错误捕获。 返回首页 返回本节 9.3.2 编写错误处理程序(1) 错误处理程序含有实际处理错误的代码,与On Error语句在同一个过程中。它不是一个过程,而是一个程序段,因此也常称之为错误处理例程、错误处理代码。 编写错误处理程序的第一步是添加标号,标号标志着错误处理程序的开始,标号后面必须带有冒号。这个标号也就是在On Error GoTo语句中使用到的标号。 通常,将错误处理程序放置在过程的末端,并在标号所在行的上一行中增加语句Exit Sub或Exit Function等,以便在没有错误发生时,避免执行错误处理代码。 9.3.2 编写错误处理程序(2) 例如,一个含有错误处理程序的通用过程TestError形式如下: Sub TestError() On Error GoTo ErrorHandler …… Exit Sub ErrorHandler: 错误处理代码位于此处 …… End Sub 返回首页 返回本节 9.3.3 退出错误处理程序(1) 在错误处理程序内,可使用下列语句退出错误处理程序。 (1)Resume 语句:使程序返回到导致错误的那条语句上重新执行。 (2)Resume Next语句:使程序返回到导致错误的语句之后的那条语句上开始执行。 (3)Resume line语句:使程序转移到由标号line指示的位置上执行。 通常,若错误在错误处理程序内得以修正,可以使用Resume 语句,否则,若错误处理程序不能修正所出现的错误,则可以使用Resume Next语句。 9.3.3 退出错误处理程序(2) 【例9.1】设计一个进行除法运算的简单程序,运行界面如图9.10所示。在第一个文本框Text1中输入被除数,在第二个文本框Text2中输入除数,单击命令按钮CmdAdd(“运算”)时,在第三个文本框Text3中显示结果。 代码如下: Private Sub CmdAdd_Click() Text3.Text = Val(Text1.Text) / Val(Text2.Text) End Sub 正常的运算中一般不会出现问题,但当在Text2中输入的除数为0时,将导致错误,使程序异常终止,显示如图9.11所示的错误信息。 9.3.3 退出错误处理程序(3) 图9.10 例9.1运行结果 图9.11 除数为0的错误信息 现在考虑错误处理,为上述代码增加错误捕获和处理的功能,改变成如下形式: 9.3.3 退出错误处理程序(4) Private Sub CmdAdd_Click() On Error GoTo Error1 开始捕获错误 此语句可能引发错误 Text3.Text = Val(Text1.Text) / Val(Text2.Text) Exit Sub Error1: 进行错误处理 Text3.Text = 无效 返回到语句Exit Sub上执行 Resume Next End Sub 经过上述处理后,当Text2中的除数为0时,程序不会异常终止,如图9.12。 9.3.3 退出错误处理程序(5) 【例9.2】读写软盘中的文件时,如果软驱中没有插入软盘,将引起错误。此时也需要捕获错误并进行处理: Private Sub cmdOpenFile() On Error GoTo Error2 开始捕获错误 此语句可能引发错误 Open a:\test.txt For Output As #1 …… Exit Sub Error2: 进行错误处理 If MsgBox(可能没有插入软盘, vbRetryCancel) _ = vbRetry Then Resume 若单击“重试”按钮,返回到Open语句重新执行 End If End Sub 返回首页 返回本节 9.3.4 关于Err对象 (1) 在例9.2中,引起错误的原因也许不是软驱中没有插入软盘,其他很多原因都有可能引起软盘读写错误,因此尽管处理了错误,但并不十分有效。要编写有效的错误处理代码,则应该了解VB中的Err对象。 Err对象是一个VB运行期对象,它包含了关于最新的错误信息,可以帮助确定发生的错误类型、原因和错误发生的地方。当程序运行时遇到一个错误,或者

文档评论(0)

1亿VIP精品文档

相关文档