| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 485 人关注过本帖
标题:用ON error do <过程名> 后系统经常报错如何处理
只看楼主 加入收藏
jenejhon
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-10-28
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
用ON error do <过程名> 后系统经常报错如何处理
我弄了一个WEBservice,有几个问题请教各位大神:
1.没有错误处理转移前,客户端没有报错,在客户端用ON ERROR DO ErrorProc 后经常报错,不知如何解决?以下是错误处理代码:
*******************************
* 名称: ErrProc               *
* 功能: 系统错误处理          *
*******************************
PROCEDURE ErrProc
LOCAL cError
IF AERROR(aErrArray)<1
    RETURN
ENDIF
IF nErrTimes < 10
    nErrTimes = nErrTimes + 1
    RETRY
ELSE
    nErrTimes = 0
ENDIF
DO CASE
CASE aErrArray(1)=1427
    MESSAGEBOX(aErrArray(2)+CHR(10)+aErrArray(3)+CHR(10)aErrArray(4)+CHR(10)+"错误号:"+ALLTRIM(STR(aErrArray(1))),0+16,"错误")
CASE aErrArray(1)=1429
    IF MESSAGEBOX("无法连接服务器, 请检查网络。"+CHR(10)+aErrArray(2)+CHR(10)+aErrArray(3)+CHR(10)+aErrArray(4)+CHR(10)+"错误号:"+ALLTRIM(STR(aErrArray(1))),5+16,"错误") = 4
        RETRY
    ELSE
        DO QuitProc
    ENDIF
CASE aErrArray(1)=1526
    MESSAGEBOX(aErrArray(2)+CHR(10)+aErrArray(3)+CHR(10)aErrArray(4)+CHR(10)+"错误号:"+ALLTRIM(STR(aErrArray(1))),0+16,"错误")
OTHERWISE
    cError = ALLTRIM(STR(aErrArray(1)))+CHR(10)+aErrArray(2)
    IF !ISNULL(aErrArray(3))
        cError = CHR(10) + cError + "参数指定错误:"+aErrArray(3)
    ENDIF
    IF !ISNULL(aErrArray(4))
        cError = CHR(10) + cError + "工作区号:"+ALLTRIM(STR(aErrArray(4))
    ENDIF
    IF !ISNULL(aErrArray(5))
        DO CASE
        CASE aErrArray(5)=1
            cError = CHR(10) + cError + "数据插入错误。"
        CASE aErrArray(5)=2
            cError = CHR(10) + cError + "数据更新错误。"
        CASE aErrArray(5)=1
            cError = CHR(10) + cError + "数据删除错误。"
        ENDCASE
        IF MESSAGEBOX(cError,5+16,"错误") = 4
            RETRY
        ELSE
            TABLEREVERT(.F.,aErrArray(4))
            RETURN
        ENDIF
    ELSE
         MESSAGEBOX(cError,0+16,"错误")
    ENDIF
ENDCASE
RELEASE aErrArray
RETURN     

2.我建了一个表单,表单的数据环境均用CursorAdapter,在INIT给各个CA进行初始化,数据来源为XML,将子表用表格(Grid)进行编辑,表格控件中用VALID控件修改其它字段,并采用行缓冲方式更新WebService的SQL数据库,现在问题是,编译前进行调试时,发现表格的第一条记录可以正常处理,所有的VALID都运行正确,也能处理相关数据库的相关表,但再加入第二条记录时,发现所有的VALID都不运行,但编译后可以运行。不知为什么?我检查所有代码,没有发现控件重新绑定的情况,而且我把非更新字段的修改状态设定为“没有编辑过”也不能解决该问题。

3.请教各位大神,如何设定soap的Delay的值,因为现在我服务器网络不给力,是铁通用花生壳动态域名的,现在速度很慢,经常报无法连接的情况,我想延长等待时间,谢谢各位。
搜索更多相关主题的帖子: 客户端 如何 
2015-01-09 09:27
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:20 
是不是 ErrorProc 的代码不完善,本身存在运行异常再触发ON ERROR。
试下如下用法看看出现异常的具体情况
ON ERROR ErrorProc(ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO())

FUNCTION ErrorProc(nErrNum, cErrMsg, cErrCode, cErrProgram, nErrLineNo)
    LOCAL cMsg, nRet
   
    cMsg  = "错误信息: " + cErrMsg            + 0h0D0D;
          + "错误编号: " + TRANSFORM(nErrNum) + 0h0D0D;
          + "错误代码: " + cErrCode           + 0h0D0D;
          + "出错程序: " + cErrProgram        + 0h0D0D;
          + "出错行号: " + TRANSFORM(nErrLineNo)

    nRet = MESSAGEBOX(cMsg, 2+48+512, "Error")

    DO CASE
    CASE nRet == 3            && 终止
        CANCEL
    CASE nRet == 4            && 重试
        RETRY
    ENDCASE
ENDFUNC
2015-01-09 09:56
jenejhon
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-10-28
收藏
得分:0 
谢谢楼上,这个问题我已经解决了,数据环境中有个cursoradapter可能存在问题,重新建立后解决了。重新建立ca后第2个问题我还没空测试,谢谢大神!
2015-01-09 16:41
jenejhon
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-10-28
收藏
得分:0 
刚测试了一下,第2个问题也圆满解决,就是找出这个错误花了我好几天时间。
2015-01-09 16:48
jenejhon
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-10-28
收藏
得分:0 
我现在是用CA的XML通过soap解决客户端、服务器、SQL的数据更新读取问题,不知哪位大神有编过用XMLHTTP类来处理这些问题的简单的服务器和客户端及SQL设置的例子可供研究下?
2015-01-09 16:53
快速回复:用ON error do <过程名> 后系统经常报错如何处理
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017556 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved