CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoLISP 开发指南

关于错误处理(AutoLISP)

2023-1-6 12:55| 发布者: admin| 查看: 752| 评论: 0|来自: AutoCAD

摘要: AutoLISP 语言提供了几个用于处理错误的函数。

AutoLISP 语言提供了几个用于处理错误的函数。

正确处理错误可使程序正常退出并产生预期结果。使用 AutoLISP 编程语言的错误处理函数可以执行以下操作:

  • 在程序执行期间发生错误时向用户提供信息。
  • 将 AutoCAD 环境恢复到已知状态。
  • 拦截错误并继续程序执行。

以下函数可用于处理程序遇到的错误:

  • *error*- 用户可定义的错误处理功能。
  • *pop-error-mode*- 结束上一个调用 toor 的错误处理函数。*push-error-using-command**push-error-using-stack*
  • *push-error-using-command*- 错误处理函数,指示在自定义处理程序中使用命令函数。*error*
  • *push-error-using-stack*- 错误处理函数,指示在自定义处理程序中使用 AutoLISP 堆栈中的变量。*error*
  • vl-catch-all-apply- 将参数列表传递给指定函数并捕获任何异常。

如果程序在同一表达式中包含多个错误,则不能依赖于 AutoLISP 检测错误的顺序。例如,该函数需要多个参数,每个参数必须是 2D 或 3D 点列表。像下面这样打电话给国脚:inters

(inters 'a)

遇到两个错误:参数太少和参数类型无效。您将收到以下错误消息之一:

; *** ERROR: too few arguments
; *** ERROR: bad argument type: 2D/3D point

您的程序应设计为处理任一错误。

注意:AutoLISP 在检查参数类型之前计算所有参数。在早期版本的AutoCAD中,AutoLISP按顺序评估和检查每个参数的类型。若要了解差异,请查看以下代码示例:
(defun foo ()
  (print "Evaluating foo")
  '(1 2))

(defun bar ()
  (print "Evaluating bar")
  'b)

(defun baz ()
  (print "Evaluating baz")
  'c)

观察如何使用函数在AutoCAD中计算表达式:inters

命令:(间歇 (foo) (酒吧) (baz))

“评价福”

“评估栏”

“评价巴兹”

;错误:参数太少

在 AutoLISP 将结果传递给之前,每个参数都已成功求值,并发现指定的参数太少。inters

在 AutoCAD R14 及更早版本中,相同的表达式计算结果如下:

命令:(间歇 (foo) (酒吧) (baz))

“评价福”

“评估栏”错误:错误的参数类型

AutoLISP 评估,然后将结果传递给。由于结果是有效的二维点列表,AutoLISP 将继续计算,确定计算结果为字符串,参数类型无效。(foo)inters(bar)inters


路过

雷人

握手

鲜花

鸡蛋

最新评论

2024年新出cad图库素材

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

GMT+8, 2024-5-7 05:35

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部