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