[熊掌定制]无聊发一个捕获错误的函数
本帖最后由 鱼与熊掌 于 2015-2-8 17:26 编辑;截取错误,并且提示
;con ,错误时候的处理方式
(defun cx-catch(fun lst con / run)
(setq run(vl-catch-all-apply fun lst))
(if(vl-catch-all-error-p run)
(progn
(setq msg(vl-catch-all-error-message run))
(setq msg
(cx-ErrToStr msg)
)
(prompt
(strcat
"\n运行中发现错误,函数:"
(vl-symbol-namefun)
"\n错误:"
msg
"\n"
)
)
(eval con)
)
run
)
);发一个实例.
(foreach x ss1_Dui
(cx-catch 'cx-Beam-Main (list x) '
(progn
(prompt "提示:出现错误的标注堆已经改成红色.\n")
(apply 'cx-mak-2ptrc (get-box x))
(cx-entmod (entlast) '(62 8) '(1 "Defpoints"))
(cx-gs x 1)
)
)
)
;函数2.错误提示转换.
;CAD自带的错误提示总是让人琢磨不透.
;如果整理好已经存在的错误提示,变成中文,或许更好理解.
;程序的原型. 往后完善,或者期待你们的完善.(defun cx-ErrToStr(msg)
(cond
((= msg "函数被取消")
(setq msg "用户中止")
)
((= msg "lentityp nil")
(setq msg "图元为空.")
)
(t
(setq msg (strcat "错误:"msg))
)
)
) 熊掌又来了! illcyt 发表于 2015-2-8 18:23 static/image/common/back.gif
熊掌又来了!
请注意 这不是委员吗. 顶一个!! 鱼与熊掌 发表于 2015-2-8 18:59 static/image/common/back.gif
请注意 这不是委员吗.
啥情况,委员?! 支持一下 赞一个先,虽然看的不是很懂 我一直想要一个这样的程序,类似于VBA的 On error goto。
因为很多程序设置了全局变量,如果和别的程序命名相同,而赋值类型不同,经常会出现不匹配的错误。
如果程序本身能捕捉到错误,并执行重新初始化的语句,然后重新执行程序,就可以解决问题了。。。 fl202 发表于 2015-2-10 09:11 static/image/common/back.gif
我一直想要一个这样的程序,类似于VBA的 On error goto。
因为很多程序设置了全局变量,如果和别的程序命 ...
那就是错误处理,并且重新运行程序?这个在错误处理的运用中有说到的.可以参见G版的帖子.
我这个是为了捕获单句.你这个是为了捕获整个程序的错误.
可以定义error函数.
如.(defun cxsta (/ msg)
(cx-begin '(("cmdecho" 0) 0 (cx-Rev-Scr)))
(setq *scrpts* (cx-get-Scr2Pt))
(setq $lt-errormsg$
'cx-ErrToStr
)
);当错误时,运行 cx-rev-scr这个是我自定义函数意思是运行屏幕效果返回. 鱼与熊掌 发表于 2015-2-10 13:17 static/image/common/back.gif
那就是错误处理,并且重新运行程序?这个在错误处理的运用中有说到的.可以参见G版的帖子.
我这个是为了捕 ...
谢谢提醒!
把初始化语句放到错误处理的函数中去,不用重新执行函数。这样就避免了全局变量与其它程序冲突,导致程序出错的事了。
页:
[1]