lijiao 发表于 2014-10-21 11:42:07

函数的安全调用

先给出函数:
(defun csrun (lst / *out*)
(if (vl-catch-all-error-p
        (setq *out* (vl-catch-all-apply (car lst) (mapcar 'eval (cdr lst))))
      )
    nil
    *out*
)
)

————————————————————————————————————————
再说说使用:
_$ (/ 1 2.0)
0.5
_$ (/ 1 0)
; 错误: 除数为零
_$ (vlax-ename->vla-object 123)
; 错误: 参数类型错误: lentityp 123
(setq a 1 b 0)
0
_$ (/ a b)
; 错误: 除数为零

在程序中出现这些问题时,程序会出错中断
_$ (csrun '(/ 1 2.0))
0.5
_$ (csrun '(/ 1 0))
nil
_$ (csrun '(vlax-ename->vla-object 123))
nil
_$ (csrun '(/ a b))
nil

这样调用可以捕获错误,但程序不中断。

zzyong00 发表于 2014-10-21 12:01:09

这样出错不提示了?

ll_j 发表于 2014-10-21 12:24:46

程序本身“安全”了,你要的结果还安全吗?
页: [1]
查看完整版本: 函数的安全调用