注册 登录
编程论坛 VFP论坛

绝世难题,天大难题,求解!!

cssnet 发布于 2022-06-14 10:42, 1945 次点击
为了让程序顺利地运行,我们会在工程的无数地方埋雷:
TRY...CATCH...FINALLY
on error do something
这些错误处理程序,若当初考虑不周,本身就存在缺陷或有逻辑错误,可能会将软件的调试带入深沟里去!——我们可能会无法发现某些隐藏比较深的错误,因为它们被错误处理程序给悄悄屏蔽并无意中忽略掉了。
有时候,调试到忍无可忍时,我们会无限渴望:
能否“一键屏蔽”工程内自己添加的全部错误处理程序,好让任何错误都无所遁形,直接暴露出来?
等最终调试完毕,又“一键恢复”全部错误处理程序,好让不必要的错误与最终用户隔离。
——这个……有辙不?
16 回复
#2
laowan0012022-06-14 11:01
#define
#3
cssnet2022-06-14 11:05
以下是引用laowan001在2022-6-14 11:01:02的发言:
#define


我说的是“亡羊补牢”,而非“未雨绸缪”啊。
若重头开始写一个新工程,当然可以到处加#define;
主要是当下的烂摊子:
on error业已遍地开花了,如何收拾残局,一键迅速找出错误,然后再一键恢复错误处理程序。
是这么一个意思,主要是。
#4
吹水佬2022-06-14 11:42
既然用了 TRY...,on error...,应该有抛出异常时的处理过程吧
#5
cssnet2022-06-14 12:01
以下是引用吹水佬在2022-6-14 11:42:35的发言:
既然用了 TRY...,on error...,应该有抛出异常时的处理过程吧

运行结果不正确,反复调试无解。
最终怀疑可能是异常处理过程本身就存在逻辑错误。
想要查找“问题解决代码的问题”,这就相对困难了。
必须将所有的原始错误,直接暴露出来,否则查起错误处理程序来茫无头绪,查无可查。
#6
mywisdom882022-06-14 12:12
自己开发的,在那个地方,做了什么,都清楚的,怎么还会不知道故障在哪里呢
除非不是自己开发的,维护别人的
#7
mywisdom882022-06-14 12:13
ON ERROR,只是为了系统在报错误的时候,还能正常退出,运行,等操作
#8
cssnet2022-06-14 12:36
以下是引用mywisdom88在2022-6-14 12:12:18的发言:
自己开发的,在那个地方,做了什么,都清楚的,怎么还会不知道故障在哪里呢
除非不是自己开发的,维护别人的


假如是自己3年前、5年前、甚至10多年前开发的工程呢?年纪大啦,哪有那么好的记性啊!
#9
cssnet2022-06-14 12:42
看几位大佬都这么说,估计没有捷径。要不这么着,自己模仿Unfoxall附送的几个开源小工具,改写一个“解决绝世难题小工具”吧:
一键屏蔽全部异常处理代码.prg
一键恢复全部异常处理代码.prg
无非就是遍历全部prg、vcx、scx等等,搜出异常处理代码,然后【多行注释/多行撤销注释】,难倒是不难,就是得小心点儿。呵呵。
#10
a575985872022-06-14 16:32
能否“一键屏蔽”工程内自己添加的全部错误处理程序,好让任何错误都无所遁形,直接暴露出来?
等最终调试完毕,又“一键恢复”全部错误处理程序,

想实现上边的效果 也可以:

每一个错误处理语句段 保存在一个相同的条件语句中 当条件为  t  则执行  
通过修改条件 即可 完成 一键屏蔽 或 一键恢复


[此贴子已经被作者于2022-6-14 16:35编辑过]

#11
laowan0012022-06-14 17:46
看来不是统一的错误处理程序,这事有点难
#12
laowan0012022-06-14 21:40
代码引用,查找所有ON ERROR
#13
独木星空2022-06-14 22:27
大家讨论的挺激烈,继续加把劲,把问题解决了。
#14
hu9jj2022-06-15 07:51
这没有太多的捷径,正在开发的代码可以直接用#IF来解决,维护已有的代码则可以通过搜索功能来定位ON ERROR语句,添加#IF,至于添加的方式可以手动,也可以编一个小程序自动搜索添加。
#15
csyx2022-06-15 08:15
把要屏蔽的指令都重新定义了,ex:

*-- DisErrHandler.h
#define try      *-
#define catch    *-
#define endtry   *-

*-- xxx.prg
#include "DisErrHandler.h"

Try
    a = 1
Catch
    b = 2
EndTry
? a, b



[此贴子已经被作者于2022-6-15 08:21编辑过]

#16
aqyejun2022-06-15 08:35
容错处理机制挺有思考价值!
#17
shenlancwz2022-06-19 15:52
这么简单的问题,好处理的很,你所有的try的cath to XXX  endtry 里加上出错信息提示就可以了,也可以设置这个显示可以只有你能看到,也可以在什么情况下显示。
1