CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

关于捕获运行时错误 (VBA)

2023-1-4 18:32| 发布者: admin| 查看: 2344| 评论: 0|来自: AutoCAD

摘要: 在 VB 和 VBA 中,运行时错误是使用 On Error 语句捕获的。

在 VB 和 VBA 中,运行时错误是使用 the语句捕获的。On Error

这句话从字面上为系统设置了一个陷阱。发生错误时,此语句会自动绕道处理到专门编写的错误处理程序。绕过系统的默认错误处理。

语句有三种形式:On Error

  • On Error Resume Next
  • On Error GoTo Label
  • On Error GoTo 0

当您想要忽略错误时,将使用语句。此语句捕获错误,而不是显示错误消息并终止程序,它只是移动到下一行代码并继续处理。例如,如果要创建一个子例程来循环访问模型空间并更改每个图元的颜色,则您知道,当您尝试为锁定图层上的图元着色时,AutoCAD 将引发错误。无需终止程序,只需跳过锁定层上的实体并继续处理剩余的实体即可。该语句允许您做到这一点。On Error Resume NextOn Error Resume Next

当您想要编写显式错误处理程序时,将使用该语句。此语句捕获错误,而不是显示错误消息并终止程序,而是跳转到代码中的特定位置。然后,代码可以通过适合应用程序的任何方式响应错误。例如,您可以展开上面的示例以显示一条消息,其中包含锁定图层上每个实体的句柄。On Error GoTo Label

使用“出错时恢复下一个”语句处理错误

以下子例程迭代模型空间并将每个实体的颜色更改为红色。尝试在具有多个图元的图形上运行此子例程,其中一些图元位于锁定层上。接下来,注释掉语句并再次运行子例程。您会注意到子例程在锁定层上的第一个实体处终止。On Error Resume Next

Sub Ch11_ColorEntities()
  Dim entry As Object
  On Error Resume Next
  For Each entry In ThisDrawing.ModelSpace
    entry.Color = acRed
  Next entry
End Sub

使用“出错时 GoTo”语句处理错误

以下子例程迭代模型空间并将每个实体的颜色更改为红色。对于锁定层上的每个实体,错误处理程序显示自定义错误消息和实体的句柄。尝试在具有多个图元的图形上运行此子例程,其中一些图元位于锁定层上。接下来,注释掉语句并再次运行子例程。您会注意到子例程在锁定层上的第一个实体处终止。On Error GoTo MyErrorHandling

Sub Ch11_ColorEntities2()
  Dim entry As Object
  On Error GoTo MyErrorHandler
  For Each entry In ThisDrawing.ModelSpace
    entry.Color = acRed
  Next entry

  ' Important! Exit the subroutine before the error handler
  Exit Sub
MyErrorHandler:
  Msgbox entry.EntityName + " is on a locked layer." + _
  " The handle is: " + entry.Handle
  Resume Next
End Sub

该语句取消当前错误处理程序。TheandLabel 语句一直有效,直到子例程结束、声明另一个错误处理程序或使用语句取消错误处理程序。On Error GoTo 0On Error Resume NextOn Error GoToOn Error GoTo 0


路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-11 15:29

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部