该函数允许您截获 ActiveX 方法返回的错误,并决定程序应如何继续。vl-catch-all-apply
注意:AutoLISP 中的 ActiveX 支持仅限于 Windows。
创建新的 AutoLISP 源代码文件
- 在 Visual LISP 中,单击“文件新建文件”。
- 单击文件另存为。
- 在“另存为”对话框中,
- 指定新的 AutoLISP 源文件的位置。
- 在“文件名”框中,输入“拦截活动XErrors”。
- 在“保存类型”下拉列表中,选择“Lisp 源文件”。
- 单击保存。
加载并运行代码
- 单击工具在编辑器中加载文本。
- 在AutoCAD命令提示符下,输入(bnddrop)。
由于 Ray 对象扩展到无穷大,因此无法用框将其括起来,并且 GetBoundingBox 会导致以下错误:
; error: Automation Error. Invalid extents
如果此代码是应用程序的一部分,则此时执行将停止。
捕获由 vla-GetBounding Box 函数创建的错误
- 在 Visual LISP 文本编辑器窗口中,输入
(defun bndcatch (/ bbox)
(setq bbox (vl-catch-all-apply
'vla-getboundingbox
(list (vla-item mspace (- 1 (vla-get-count mspace)))
'll
'ur
)
)
)
(if (vl-catch-all-error-p bbox)
(list "Exception: " (vl-catch-all-error-message bbox))
(list "Do something with bounding box." bbox)
)
)
此函数用于调用。它传递两个参数:命名被调用函数的符号和要传递给的参数列表。如果方法成功完成,则返回值存储在变量中。如果调用不成功,则在其中存储错误对象。vl-catch-all-applyvla-getboundingboxvl-catch-all-apply('vla-getboundingbox)vla-getboundingboxGetBoundingBoxvl-catch-all-applybboxvl-catch-all-applybbox
此时函数,直接发出,导致错误,执行停止。但是在,拦截错误和程序执行继续。bnddropvla-getboundingboxbndcatchvl-catch-all-apply
一个调用来检查返回值from并返回如果它是一个错误对象,否则。如果返回值是错误对象(如本例所示),则函数 issuesto 从错误对象获取消息。程序执行从这一点继续。vl-catch-all-error-pvl-catch-all-applyTnilvl-catch-all-error-message
|