关于Throw的怪问题

turejackon 2009-12-21 01:28:12
我写了一个类,方法如下:

DEFINE CLASS CustFunc AS CUSTOM OLEPUBLIC
FUNCTION SaveSqlScript(ConnUp As Number , OpType As String ,BM As String ,Sm1 As String ,Lx As String ,DbName As String ,SqlScript As String) &&保存存盘的Sql语句到UloadData表中
PRIVATE ALL EXCEPT CD_*
TRY
Ret=0
IF EMPTY(CD_OBJ_LJ.ULoadBz_F) &&ULoadBz_F 空:不记录SQL语句,#Z:只记录字典的语句,#S:只记录单据语句,#A:两种语句都记录
THROW
ENDIF
IF CD_OBJ_LJ.ULoadBz_F='#S' AND EMPTY(Lx) &&LX为空表示是字典的数据
THROW
ENDIF
IF CD_OBJ_LJ.UloadBz_F='#Z' AND NOT EMPTY(Lx)
THROW
ENDIF
Sqlse1="Select Getdate()"
SqlScript=STRTRAN(SqlScript,"'","/d")
Sqlse1="Insert Into "+CD_OBJ_Sqlcon.MainDb_F+"..UpLoadData";
+"(OpType_F,Rszd_Bm_F,Sm1_F,Rszd_Lx_F,DbName_F,SqlScript_F,Date_F)";
+" Values(";
+" '"+OpType+"'";
+",'"+Bm+"'";
+",'"+Sm1+"'";
+",'"+Lx+"'";
+",'"+DbName+"'";
+",'"+SqlScript+"'";
+",GetDate())"
Er1=SQLEXEC(ConnUp,Sqlse1) &&用传入的句柄,以便跟随外部调用程序Commit时提交,达到一致
IF Er1<0
SQLROLLBACK(ConnUp)
Ret=-1
MESSAGEBOX("错误:"+Sqlse1,"Class_Func_1.SaveSqlTScript()")
STRTOFILE(Sqlse1,"d:\Errlog.txt")
THROW
ENDIF
CATCH TO Err1
IF UPPER(Err1.LineContents)<>'THROW'
Ret=-1
MESSAGEBOX("错误代码:"+Err1.LineContents+CHR(13)+"错误原因:"+Err1.Message,"Class_Func_1.SaveSqlScript() 错误行号:"+ALLTRIM(STR(Err1.LineNo)))
ENDIF
ENDTRY
RETURN Ret
ENDFUNC
ENDDEFINE


因为VFP中try catch 之间不能加return,所以我只能用throw来跳出程序,于是我在catch 中加了判断,如果是Throw出来的,就不报错,其它的就报错,这段代码在公司运行正常,但在客户那里运行就会出现怪问题,客户那里IF UPPER(Err1.LineContents)<>'THROW'这句判断失效,一样会Messagebox,但Messagebox中提示错误代码是"...",而错误原因:"用户抛出",很奇怪,我抛出的代码应该是Throw啊,怎么会变成是"..."了呢.....于是在公司删掉对应程序的Fxp重新编译,然后新编的fxp发给客户,问题依旧,最后把PRG发到客户在客户那里再编译一次重新形成Fxp,问题就消息了..........真是百思不得奇怪.
...全文
119 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2009-12-26
  • 打赏
  • 举报
回复
可以这样使用 Try

lnError=0
Try
*你的语句
Catch
lnError=1
Endtry
If lnError=1
*程序出错了,这里可以加你想要的 Retrun
Endif
ACMAIN_CHM 2009-12-21
  • 打赏
  • 举报
回复
调试中看一下,er1,err1 的错误信息是什么。
wwwwb 2009-12-21
  • 打赏
  • 举报
回复
Err1.LineContents) <>'THROW'这句判断失效

检查Err1.LineContents是什么内容

2,727

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧