函数的安全调用
先给出函数:(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
这样调用可以捕获错误,但程序不中断。
这样出错不提示了? 程序本身“安全”了,你要的结果还安全吗?
页:
[1]