- ;;我的话,会这么弄
- (defun c:tt nil
- (setq a (strcat 1 2 3))
- (setq b 1)
- (setq c 2)
- (princ a)
- (prin1)
- )
- ;;正常的话,运行第一句(setq a (strcat 1 2 3)) ,程序就中断了
- ;;b ,c就不会有值
- ;;利用vl-catch-all-apply出错也可以运行的原理
- ;;程序改造一下
- (defun tryexp (x / catch)
- (vl-catch-all-apply
- '(lambda () (setq catch (eval x)))
- )
- catch
- )
- (defun c:tt nil
- (mapcar 'tryexp
- '(
- (setq a (strcat 1 2 3))
- (setq b 1)
- (setq c 2)
- (princ a)
- )
- )
- (prin1)
- )
|