在 VB 和 VBA 中,使用语句捕获运行时错误。On Error 这句话从字面上为系统设置了一个陷阱。发生错误时,此语句会自动将处理绕行到专门编写的错误处理程序。将绕过系统的默认错误处理。 该语句有三种形式:On Error
当您要忽略错误时,将使用该语句。此语句捕获错误,而不是显示错误消息并终止程序,它只是移动到下一行代码并继续处理。例如,如果要创建一个子例程来循环访问模型空间并更改每个图元的颜色,则您知道,如果尝试在锁定图层上为图元着色,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 相关参考父主题: |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:48
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.