第11章程序调试和出错处理内容摘要:

与 Cancel按钮 39。 VbCritical提示 Stop图标、 VbExclamation提示警告图标 Style = vbRetryCancel + vbCritical + vbDefaultButton2 Title = 出错提示 第 11章 程序调试和出错处理 Response = MsgBox(Msg, Style, Title) 39。 等待用户处理决定 If Response = vbCancel Then 39。 若按下 Cancel按钮,放弃处理 Exit Sub End If Case 71 39。 71号错误为 A盘未准备好 错误 Msg = A盘未准备好 Style = vbRetryCancel + vbCritical + vbDefaultButton2 Title = 提示 Response = MsgBox(Msg, Style, Title) If Response = vbCancel Then Exit Sub 第 11章 程序调试和出错处理 End If Case Else 39。 当发生其它不可预知的错误时,退出本程序 MsgBox 其它错误,退出本程序。 Exit Sub End Select Resume 39。 Resume再次执行原出错语句 End Sub 第 11章 程序调试和出错处理 本过程根据 Err函数返回的错误号,做相应的错误处理。 将错误分为文件不存在和 A盘未准备好两种可预知的错误以及其它不可预知的错误。 当发生不可预知的错误时,终止本程序的执行,否则,在 MsgBox窗内给出出错提示。 此时,用户可关闭好 A驱动器小门或重插入软盘,再按下 Retry按钮,本过程会用 Resume命令再次执行原出错语句,若执行成功,则结束,否则,再重复出现 MsgBox窗,直至错误排除。 若在 MsgBox窗内给出出错提示后按下 Cancel按钮,变量 Response接收到Cancel信息,经 If语句判定,退出本程序。 第 11章 程序调试和出错处理 【 例 112】 下列程序用于处理企图删除一个已打开的文件所产生的错误。 Sub ResumeStatementDemo( ) On Error GoTo ErrHandler 39。 设置错误陷阱 Open testfile For Output As 1 Kill testfile 39。 企图删除一个打开的文件 Exit Sub ErrorHandler: Select Case Case 55 39。 55号 文件己打开 错误 Close 1 39。 处理方法:关闭文件 Case Else … Endselect Resume End Sub 第 11章 程序调试和出错处理 【 例 113】 下列程序采用忽略错误的方法处理错误 , 错误类型与上例中的错误相同。 Sub ResumeStatementDemo( ) On Error GoTo ErrorHandler 39。 设置错误陷阱 Open testfile For Output As 1 Kill testfile 39。 企图删除一个打开的文件 On Error GoTo 0 39。 关闭错误陷阱 On Error Resume Next 39。 忽略 Kill testfile出错行指令 ObjectRef = GetObject() 39。 企图启动一个不存在的对象 If = 440 Then 39。 440OLE自动化出错 Msg = “ 打开 OLE对象出错。 ” 第 11章 程序调试和出错处理 MsgBox Msg 39。 清除出错号 End If Exit Sub ErrorHandler: Select Case Case 55 Close 1 Case Else End Select Resume End Sub 第 11章 程序调试和出错处理 本过程中的第一行语句设置错误陷阱 , 其目的是当发生错误时转跳到由标号 Error Handler指明的错误处理程序块。 第二行语句打开文件。 第三行语句在没有关闭该文件的前提下 , 企图删除该文件。 Err函数返回 55号出错号。 由于第四行语句 On Error Goto 0的作用 , 关闭了错误陷阱 ,不使用错误处理程序块而执行第五行语句 On Error Resume Next,它使 Kill testfile命令无效。 第六行语句企图启动一个不存在的对象,产生错误号为 440,当 If 440错误号后给出提示,然后用,使 0。 第 11章 程序调试和出错处理 错误处理是应用程序设计中必须考虑的问题 , 一般编写错误处理可按 Visual Basic所建议的三条错误处理原则进行: (1) 编写一个有安全出口的处理程序 , 使程序中的各种错误最后都有一个归宿。 (2) 利用 Error Err方法作为解决自己无力处理或不可预测错误的最后手段。 (3) 若不想让函数或过程中出现的错误交由上层程序处理,可用 Stop方法结束程序。 第 11章 程序调试和出错处理 【 例 114】 下列程序处理由 “ 被零除 ” 、 “ 溢出 ” 和 “ 非法的过程调用 ” 三种情况产生的错误 , 以下 Function过程捕获这些错误并返回 Null。 (1) 界面设计只有一个测试按钮 , 调用 Function过程 , 用对话框显示结果。 (2) 程序代码如下: 39。 子过程 Devide测试运算符/的结果 Function Divide(number As Integer, denom As Integer) As Variant Dim Msg As String 第 11章 程序调试和出错处理 39。 声明常量,用于代表被零除、溢出和非法的过程调用三种错误号 Const mnErrDivByZero = 11 Const mnErrOverFlow = 6 Const mnErrBadCall = 5 On Error GoTo MathHandler Divide = number / denom 39。 计算 Exit Function M。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。