CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 文档中心

关于错误处理(AutoLISP)

2023-1-8 12:27| 发布者: admin| 查看: 681| 评论: 0|来自: AutoCAD

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

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

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

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

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

  • *error*- 用户可定义的错误处理函数。
  • *pop-error-mode*- 结束上一次对 或 的调用的错误处理函数。*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 点列表。对 inter 的调用如下: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

命令:(inters (foo) (bar) (baz))

“评估 foo”

“评估栏”

“评估巴兹”

;错误:参数太少

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

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

命令:(inters (foo) (bar) (baz))

“评估 foo”

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

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


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-15 14:49

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部