明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2551|回复: 9

使用*error*函数会屏蔽错误显示吗?

[复制链接]
发表于 2005-7-19 16:19:00 | 显示全部楼层 |阅读模式

我的机子有这样的现象:

如果加载的lisp程序中使用了*error*函数,在运行或调试lisp程序时,只要出错,显示信息都是同一个: 错误:*error*函数中出错,AutoCAD变量设置被拒绝:"blipmode" nil

只有清除加载程序中的*error*函数,才会反映出正确的出错信息。

这样很烦,有时候不得不用*error*函数,但用了以后,就看不到正确的错误提示,在调试程序时无从下手(只能从头重新看)。 又没有什么办法可以解决这种问题?

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2005-7-19 22:18:00 | 显示全部楼层

你是不是没有定义自己的*error*函数啊,

建议看一下"批量打印"的原程序,

dispbbs.asp?boardID=3&ID=39714&page=1

可以看看如何定义自己的 *error*函数.

发表于 2005-7-19 22:28:00 | 显示全部楼层
与*error*无关,是你的程序变量申明的问题。
比如:
主程序: (defun prg (/ )  (setq blp_save (getvar "blipmode")) (setq *error* prg_error)……)
错误处理函数:(defun prg_error (s /  blp_save )  ……  (setvar "blipmode" blp_save) )就会出现上述情况,你只要把blp_mode 的声明去掉就可以了。
还有就是要确定在程序中,该变量不要被置为空,否则也会出错。


 楼主| 发表于 2005-7-20 19:30:00 | 显示全部楼层

我的程序格式如下

 (defun *error* (msg)

。。。)

主程序。。。

另外,我的意思是: 当有别的加载程序定义了*error*函数时,相对于我当前程序的错误显示始终是一个显示,比如我把(vl-load-com) 错写成了(vla-load-com) 调试程序时的错误显示还是“错误:*error*函数中出错,AutoCAD变量设置被拒绝:"blipmode" nil” 其实我根本没涉及blipmode。

 

发表于 2005-7-20 20:45:00 | 显示全部楼层
传完整程序上来让大家帮你看看
 楼主| 发表于 2005-7-21 09:16:00 | 显示全部楼层

可能是我没说明白,我的意思是加载程序和调试程序是两个程序,且没有任何关联,  只要任何一个加载程序调用了*error*函数,就会对调试程序时的错误显示产生影响。

发表于 2005-7-22 19:37:00 | 显示全部楼层
呵,肯定是你的函数有问题,*error*本身不会出现这样的问题的
发表于 2005-7-23 09:32:00 | 显示全部楼层

不要直接重定义*error*函数,应该这样

(defun err(msg)

  ...;你的错误处理!

 (setq *error* errtmp) ;如果出错了,也要恢复错误处理函数

)

;主程序

(defun main()

 (setq errtmp *error*)

 (setq *error* err)

.......;程序内容

(setq *error* errtmp);恢复*error*函数

发表于 2005-7-23 23:29:00 | 显示全部楼层
对啊,难道谁会把错误处理函数定义了又不恢复吗?
 楼主| 发表于 2005-7-25 02:16:00 | 显示全部楼层
谢谢meflying,是我对错误处理函数的理解不够,问题解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 23:32 , Processed in 0.197762 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表