CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ActiveX 开发指南

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

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

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

在 VB 和 VBA 中,使用语句捕获运行时错误。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 语句处理错误

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

使用 On Error 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

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


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2025-1-8 19:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部