错误定位
好啊所以我在这里看到了很多关于错误处理程序的不同讨论。
我已经和阿斯米、大卫·贝瑟尔、卡布等谈过了。。。
有人说要使用错误处理程序,如:
(defun *error* (msg)
....
)
并定位主函数中的*错误*,
其他人使用*error*函数重置系统变量:
(*error* "") ; reset variables
一些人不同意,并表示要格式化处理程序:
(setq *error* (lambda (e)
(cond....
)
哪种方法正确?!
干杯
李 这取决于目标。我在这个问题上的理念很简单:“恢复原状”。但这只是因为我不知道我的工作计划在哪里。
如果特定用户需要遵循的理念可能不同:“按照标准恢复”。
我不相信有权利去禁用一个不知名的家伙BLIPMODE,他可能会喜欢它。这就是为什么我写局部函数*error*,它只与我的程序相关。我从来没有写过处理错误的标准条款,也没有印章,每个处理错误都是不同的。 很好,ASMI,
设置为以前的设置,而不是重置为标准变量集。
但是,使用将处理程序定义为局部函数的方法,是否必须在主函数中定位*错误*? 李,
我不认为有一个正确的答案是如何定义一个错误(setq vs defun)
我确实认为,在错误情况下,它应该:
[列表]
[*]如果激活,则取消命令
[*]适当时显示有意义的消息
[*]撤消程序对数据库所做的所有更改
[*]调用重置模式子例程
重置子程序应:
[列表]
[*]将系统变量和模式重置为其原始状态
[*]结束撤消组
[*]还原*错误*处理程序
附件是1997年计算机日的讨论。这大概是R13发布的时候,我们中的很多人仍然在使用R12。
我读了一些有趣的书,尽管其中有些内容有点冗长-大卫
清洁。拉链 谢谢你的意见大卫-我看到这是一个很大的讨论问题-特别是根据你的附件长度!
我发布这条帖子的唯一原因是为了能把事情做好。
我不想回答人们的问题,也不想发布写得很糟糕/不正确的例程。所以我想从这里有经验的人那里学习,了解如何正确格式化例程,比如错误处理程序。
在阅读了您的回复后,我意识到似乎没有一种标准的方法来分配错误处理程序,每个人似乎都有自己的方法。
我看了David的错误模板——注意它包括函数重置的所有方面——包括“撤销组”和一系列系统变量。
在我的错误例程中,我通常将error定义为一个子函数,并收集我打算随着例程的进行而更改的sysvars值最终,事情发展到了最后。
我想让事情简单明了,但我想把事情做好。 李,
这是在这样的论坛上发布代码片段和完整程序的缺点之一。很难用一个简短的格式抓住所有的可能性。
用户有责任确保有足够的备份,知道即使有最好的意图,程序员也会犯错误,这可能会毁了他们的一天。因此,这是一种“买家当心”,在证明有价值之前,不要在生产图纸上使用这些东西-大卫
大卫说得好。
毕竟,这里没有人试图提供恶意程序,但我们不能解释每一个结果。
页:
[1]